Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 04/20/2016 in all areas

  1. I have just delivered this website: Into Nature (Dutch only), about an 'Art expedition' through the province of Drenthe, in The Netherlands. I built the site for Vandejong. The site is made using two distinct parts/techniques: Processwire for the back-end (through a RESTful json api) and the front-end is built on Ember.js. This is my third large site built this way, and the first I am completely happy about. A page called 'API' is the main interface between the two: it uses urlSegments and parses the content from the PW pages into Ember-friendly JSON data. As Ember is very strict (heavily based on the Convention over Configuration concept), and Processwire is extremely versatile, the way Ember requires its data dictates the way I shaped the API. Both @clsource's REST-helper and ProCache are used to format and cache the API responses, making the API very responsive. Something that was initially hard to wrap my head around was how to deal with the site's routing/pagetree. While Google now indexes modern 'single-page' web applications, for instance Facebook still scrapes their opengraph from the raw HTML pages. I dealt with this by giving the Ember app and the PW page-tree use the exact same routes / pages. Every Processwire page is a valid starting point for the Ember app, while also including the scrapeable meta tags belonging to that exact URL. As a result, the whole thing is nicely CURL-able and bot-friendly.
    10 points
  2. Reddal is a global professional services firm offering business development as a service. The company has expanded rapidly to offices in Helsinki, Seoul, Dubai and Kuala Lumpur. http://www.reddal.com/ From the ProcessWire point of view the Reddal.com was designed and developed for maximal flexibility. The site was arranged in sections in which each layout segment is represented by a ProcessWire page. Segments can be re-arranged like Lego blocks within a set of visual constraints. This allows for long and visual pages throughout the site. Modules used: - Form Builder - Lister Pro - ProCache - InputfieldMapMarker - Redirect Branding, design and development by Nordenswan & Siirilä. http://www.nordenswansiirila.fi/ Primary site photography by Marek Sabogal.
    7 points
  3. Would it be possible for you to describe a bit more detailed how you tackled the integration of those lego blocks in the backend?
    4 points
  4. Hi all! Just wanted to let you know that something wicked is coming your way: https://github.com/BlowbackDesign/TinyPNG It's still pretty much "work in progress" but currently module works and you're able to compress Pageimages by either manually with added tinify() method or automatically when image is resized using size() method. Croppable images can also be compressed by adding tinify() to the returned Pageimage object. On next stage I'll add support for (resized) embedded images at richtext editor and maybe some other features if needed. Time is little short right now but I'll try to make it happen sooner than later. This module creates compressed images as a variation of original (or resized) image so any of the source files aren't overwritten. This ensures good quality and tries to avoid pixelated over compressed images. Module uses Tinify PHP client to connect TinyPNG API (and thus is available to use as is as an autoload module). Please feel free to try out and tell me what you think!
    4 points
  5. Hi Peter This answer might not apply directly to you... but I put it here for the benefit of the wonderful group of positive contributors here in PW land I've started to get into more serious audio visual recordings now.... The brief summary is yes you need a good mic. Congratulations Peter on deciding this! So many people use their in-device mic and things just sound awful. Most experienced people will tell you that sound quality is way way WAY more important than the video quality. But of course you and I want both! So the big problem on the internet is what they don't talk about much at all is that to get the best results you really need to equalise your recordings with audio editing software. You can easily research and find yourself a great mic yet be totally unhappy with your recording played back. Even with a good mic, some things like your environment, distance from mic, alignment to mic, your voice, your mouth teeth toungue profiles, the way you speak, the language spoken and the devices your target audience will ultimately play it on means that to get the best results, equalisation is required. Software equalization can and does come in the form of plugins. Good audio editors will accept plugins. So the idea is to find an audio editor that you like using and find the appropriate plugins for it. The plugins come in various formats. Since I use a mac, I look for audio plugins that come in the AU format. So Peter... if your happy with the sound straight out from your mic, great! But if your not, then look for an audio editor and some equalisation plugins and have a fiddle. For audio production, one paid software plugin suite that I think highly of is iZotope Nectar. It's not cheap Peter. But it has a ten day trial. If you have a play with it during those ten days... you will be able to play with a whole lot of modules and equalisation and presets and from there you will know what kind of plugins that you are looking for and seek them elsewhere. There are various standalone 3rd party discrete plugins that you can buy for affordable prices. In my case Peter, I really need a de-esser with my recordings. I use a cardioid mic thats great for field recordings and has great noise rejection. But I've come to the realisation that that noise rejection quality of the mic comes at the expense of a problem created elsewhere! In my case that cost is a high frequency peak in the sibilance region. By de-essing my recordings and selecting the male radio announcer voice in iZotope to deepen the midrange of my voice and give it a bit of extra body I can actually listen to my own voice quite comfortably and not cringe! Perhaps a solid choice for a bloke you should ask for actual mic suggestions would be our fellow member Joss. He is a real audio guy! Happy recording Peter!
    3 points
  6. A bit of history: PageTable is part of the ProFields. Thanks to Avoine (the sponsors) it has been made available as a free ProField. Here's a link to more info about the different ProFields, thanks to a question by @cstevensjr
    2 points
  7. Ok, the latest version now respects the maxFiles settings for the image field. Please let me know if you have any problems with this feature and if it works as expected for you.
    2 points
  8. It's a core module that you have to install
    2 points
  9. I think PW has you covered there, There's a Content-Type select on the Files tab for each template. The note underneath says 'To add more content types see contentTypes in /wire/config.php (and add them in /site/config.php).'.
    2 points
  10. Getting back to topic Third part in Maurizio Bonani's excellent series: http://blog.mauriziobonani.com/processwire-basic-website-workflow-part-3/
    2 points
  11. I'm in the process of getting wireshell PW3 ready. But I think it could use a bit more testing before I'll finally push it into the master branch. So I started a RC branch just for this purpose. If someone wanted to try and test it – which I would really appreciate: here you go (or: checkout branch feature/devns) !
    2 points
  12. Hi all, My 1st submission here - MeBilling.com - A website for a medical billing solution provider. What I did in this: Logo, Website Design, Processwire integration Processwire modules used: Mostly utilised core 3.0.x modules, with Frontend editing feature for ease of content editors. Let the opinions flow in.
    1 point
  13. MediaLibrary Update: MediaLibrary can now be found in the official module list. Out of necessity, I've started to implement a simple media library module. The basic mechanism is that it adds a MediaLibrary template with file and image fields. Pages of this type can be added anywhere in the page tree. The link and image pickers in CKEditor are extended to allow quick selection of library pages from dropdowns. In the link picker this happens in the MediaLibrary tab, where you can also see a preview of the selected image. In the image picker, simply select a library from the dropdown at the top, everything else is handled by standard functionality. I've put the code onto github. This module is compatible with ProcessWire 3. Steps to usage: Download the module's zip from github (switch to the pw3 branche beforehand if you want to test on PW 3.x) and unpack it into site/modules Click "Modules" -> "Refresh" in the admin Click "Install" for MediaLibrary For testing, create a page with the MediaLibrary template under home (give it an expressive title like 'Global Media') and add some images and files Edit a differnt page with a CKEditor field and add a link and an image to see the MediaLibrary features in action (see the screencap for details) Optionally, go into the module settings for MediaLibrary Note: this module is far from being as elaborate as Kongondo's Media Manager (and doesn't plan to be). If you need a feature-rich solution for integrated media management, give it a look. Feel free to change the settings for MediaFiles and MediaImages fields, just keep the type as multiple. There are some not-so-pretty hacks for creating and inserting the correct markup, which could probably be changed to use standard input fields, though I'm a bit at a loss right now how to get it to work. I've also still got to take a look at error handling before I can call it fit for production. All feedback and pointers are appreciated (that's also why I post this in the development section). Edit 09.03.2016 / version 0.0.4: there's now also a "Media" admin page with a shortcut to quickly add a new library. Edit 01.05.2016: Version 0.0.8: - The module now supports nested media libraries (all descendants of eligible media libraries are also selectable in link/image picker). - There's a MediaLibrary::getPageMediaLibraries method you can hook after to modify the array of available libraries. - You can switch between (default) select dropdowns or radio boxes in the module configuration of MediaLIbrary to choose libraries. Edit 10.10.2018: Version 0.1.3: - Dropped compatibility for ProcessWire legacy versions by adding namespaces - Allow deletion of libraries from the Media overview admin page - Added an option to hide media libraries from the page tree (optionally also for superusers)
    1 point
  14. What does autojoin do? Using the 'autojoin' optimization can increase performance on fields that get used a lot. Not using it can reduce the page's memory footprint. What is more desirable in each instance depends on your situation. What sites should use autojoin? Autojoin is most applicable with larger sites. On smaller sites, there may be no benefit to using it or not using it. But it's good to know what it's for regardless. Where do you control autojoin? Autojoin is controlled per-field. You can turn it on by editing each field under Setup > Fields > [your field], and you'll see it under the 'Advanced' heading. When should you use autojoin? Autojoin causes the field's data to be loaded automatically with the page, whether you use it or not. This is an optimization for fields that you know will be used most of the time. Fields having their data loaded with the page can increase performance because ProcessWire grabs that data in the same query that it grabs the Page. Autojoin is a benefit for fields that are always used with the Page. This is best explained by an example. Lets say that you have a template for individual news stories called news_story. The news_story template has these fields: title date summary body sidebar We'll assume that when you view a page using the news_story template, all of the fields above are displayed. Fields that should have autojoin ON: Now consider a separate news_index template that displays ALL of the news stories together and links to them. But it only displays these fields from each news story: title* date summary In this case, the 3 fields above would be good to autojoin since they are used on both the news_index and news_story templates. If your title, date and summary fields didn't have autojoin turned on, then ProcessWire wouldn't go retrieve the value from the database until you asked for it it (via $page->summary, for example). Because the news_index template displays all the stories at once, and always uses the title, date and summary fields, it will perform better with title, date and summary having autojoin ON than with it OFF. In this case, it reduces the query load of the news_index template by 3 for each news story. To take that further, if it were displaying 20 news stories, that would mean 60 fewer queries, which could be significant. Fields that should have autojoin OFF: Now lets consider the body and sidebar fields, which are only used on the news_story template: body sidebar It would be desirable to leave autojoin OFF on those fields because there is no reason for the body and sidebar to be taking up space in memory when they are never used on the news_index template. While it might mean 2 fewer queries to view a news story, that is not significant and certainly not a worthwhile tradeoff for the increased memory footprint on the news_index template. Keeping autojoin OFF reduces a page's memory footprint. Conclusion Using the 'autojoin' optimization can increase performance on fields that get used a lot. Not using it can reduce the page's memory footprint. What is more desirable in each instance depends on your situation. But if your situation doesn't involve lots of pages or data, then you don't need to consider autojoin at all (and can generally just leave it off). Additional Notes Not all fields have autojoin capability. You won't see the option listed on fields that don't have the capability. *The title field has autojoin on by default, so you don't need to consider that one. It was included in the examples above because I thought it's omission might cause more confusion than it's inclusion. Be careful with multi-value fields that offer autojoin capability (page references and images, for example). Because MySQL limits the combined length of multiple values returned from a group in 1 query, autojoin will fail on multi-value fields that contain lots of values (combined length exceeding 1024 characters). If you experience strange behavior from a multi-value field that has autojoin ON, turn it OFF. If you want to play it safe, then don't use autojoin on multi-value fields like page references and images.
    1 point
  15. This week's version of ProcessWire adds several new panels that provide simpler and more direct access to the page tree, page view and debug tools. New page view options also include multi-language selection and configuration support. And if that's not enough, we've also got install-time utf8mb4 support and more! https://processwire.com/blog/posts/pw-3.0.15/
    1 point
  16. Hi guys, I'm learning Go since a few weeks and every now and then I stumble over some great tools for web development. This one I found yesterday is awesome if you work with large scale systems: https://github.com/buger/gor/ Under the hood it works with raw socket connections, like a sniffer, pcap or wireshark, but without using the well known libpcap. I guess the performance impact is the smallest possible. Take a look at the github page if you like, it has some very interesting features. Maybe a handy tool for some of you Cheers
    1 point
  17. I use the Samsong USB mic http://www.samsontech.com/samson/products/microphones/usb-microphones/meteormic/ And for Recording video http://www.logitech.com/en-us/product/hd-pro-webcam-c920 And for Recording Screen http://telestream.net/screenflow/overview.htm?__c=1
    1 point
  18. This post describes a way of overwriting the created date via the API.
    1 point
  19. Forgot to note here that the ideas here have now (have since Dec 2015!) been implemented in the core (ProcessCommentsManager).
    1 point
  20. Pagination is not possible in the Inputfield (unless something has changed that I don't know about). For that number of comments, why not use the (new) Comments Manager? You can do your pagination there, filtering, bulk edit, etc.
    1 point
  21. @Roope: this is good news. I have only one suggestion: I would avoid the uncontrolled automated mode! (for every size() request!) Instead I would bind it to a defined suffix option (tinify). Or you do it the opposite, check for a suffix (notinify) and compress all others. This is the only way to be able to also produce intermediate images wich resulting pageimages will be passed to another image->size() request. Also, if the image is marked to get compressed, you need to check the setting for quality (if it can compress jpegs) and adjust it to 100%. If you compress images with quality settings lower than 100 and afterwards pass them to the compress service, you will get results with higher filesize! and with lower visual quality! If you have any questions to my suggestion, I'll be glad to give more info and / or point to some. https://processwire.com/talk/topic/6667-jpegoptimimage/#entry65531 (the first part) http://images.pw.nogajski.de/jpegoptim/ (compared different imagesizer quality filesizes)
    1 point
  22. You're right - I rushed that last update - there are two ways to get the title and the second one still works. I have reinstated that and it should be working again now. I am still going to wait till tomorrow to deal with the max files setting - I definitely need to think this through a little better first.
    1 point
  23. Hi @Robin S, Thanks for the report - I have a fix for the "Unable to Copy". However it looks like Youtube has also finally removed direct access to the video's RSS feed for getting the title and description. I have committed a quick update that takes care of the first problem and prevents errors for the second, so it should work for you now. I will try to find some time tomorrow to implement the changes needed to fix access to the feed and also look at the max images setting issue.
    1 point
  24. Love the new panel thingy! Especially the 'side effect' that you can use it as some sort mediaquery tester while dragging the pane .
    1 point
  25. You can alter an existing table simply by issuing ALTER TABLE your-table-name ENGINE=InnoDB; Though you may want to keep the original MyISAM table around. Here's a small bootstrap script to drop into the templates folder that converts all tables, either inplace (if $keepOld near the top is set to false) or creating a copy and keeping the MyISAM tables around postfixed with "_orig". It also writes a timestamped SQL file into the templates folder that allows you to switch back to MyISAM. Small caveat: if you select to keep your old tables, those will replace the generated InnoDB tables on restore, which means that all PW changes in between are lost - this may or may not be desired. So to use it, simply drop it in the templates folder of the PW installation in question and run it from the command line. It will check if you MySQL version is recent enough. <?php /** * Convert all tables in PW's database from MyISAM to InnoDB */ include('../../index.php'); // Set this to false if you do not want to keep your MyISAM tables around // with an _orig postfix $keepOld = true; // ***************************************************************************** $sql = "select substring(version(), 1, 1) as vmajor, substring(version(), 3, 1) as vminor "; $stmt = $database->query($sql); if($stmt === false) die("Something went wrong determining the version number!"); $row = $stmt->fetch(PDO::FETCH_ASSOC); $versionOK = false; if($row['vmajor'] > 5 || ($row['vmajor'] == 5 && $row['vminor'] >= 6)) $versionOK = true; if(!$versionOK) { die("You need MySQL 5.6 or later for InnoDB fulltext support!"); } // Version check finished, get list of tables $stmt = $database->prepare( "SELECT table_name" . " FROM information_schema.tables" . " WHERE table_schema = '" . $config->dbName . "'" . " AND lower(engine) != 'innodb'" ); $count = 0; if($stmt->execute()) { $tbls = $stmt->fetchAll(PDO::FETCH_ASSOC); echo "Found " . count($tbls) . " tables not running on InnoDB" . PHP_EOL; if(count($tbls) == 0) { echo "Nothing to do!" . PHP_EOL; exit; } $ts = strftime("%Y%m%d_%H%M%S"); $restore = fopen("restore_to_myisam_{$ts}.sql", "w+"); echo "- writing restore commands to file restore_to_myisam_{$ts}.sql" . PHP_EOL; // Convert each table foreach($tbls as $tbl) { $tabname = $tbl['table_name']; echo $tabname . PHP_EOL; if($keepOld) { // Create a copy of each table, convert the new table, // copy the content and switch table names $sql = "CREATE TABLE {$tabname}_convert LIKE $tabname"; if($database->exec($sql) === false) continue; echo "... Created copy of " . $tabname . PHP_EOL; $sql = "ALTER TABLE {$tabname}_convert ENGINE=InnoDB"; if($database->exec($sql) === false) continue; echo "... Changed engine to InnoDB" . PHP_EOL; $sql = "INSERT INTO {$tabname}_convert SELECT * FROM $tabname"; if($database->exec($sql) === false) continue; echo "... Copied content to InnoDB table" . PHP_EOL; $sql = "RENAME TABLE $tabname TO {$tabname}_orig," . " {$tabname}_convert TO $tabname"; if($database->exec($sql) === false) continue; echo "... Switched tables" . PHP_EOL; fputs($restore, "RENAME TABLE $tabname TO {$tabname}_innodb," . " {$tabname}_orig TO $tabname;" . PHP_EOL); fputs($restore, "DROP TABLE {$tabname}_innodb;" . PHP_EOL); $count++; } else { // Convert tables in place $sql = "ALTER TABLE $tabname ENGINE=InnoDB"; if($database->exec($sql) === false) continue; echo "... " . $tabname . " converted" . PHP_EOL; fputs($restore, "ALTER TABLE $tabname ENGINE=MyISAM;" . PHP_EOL); $count++; } } fclose($restore); } echo "Converted $count tables from MyISAM to InnoDB" . PHP_EOL; Edit: incorporated @LostKobrakai's suggestion to avoid nesting if statements.
    1 point
  26. Documentation (Work in Progress!) http://mediamanager.kongondo.com/ Still working on this but at least the basics to get you up and running are covered Getting started Adding media to Media Manager fields in ProcessWire pages Currently, site might not work properly on all devices :
    1 point
  27. I can recommend the blue usb mics (make sure any mic you get is cardioid pattern so you don't get too much room sound or echo from your own voice). If you want a set up which is more versatile, then I would get a usb audio interface with a condenser cardioid mic or two - e.g. Focusrite, m-audio, beheringer etc interface
    1 point
  28. Well, spending 12 years on PHP-Nuke the main goal of site upgrade was to keep things as simple as possible. You know all those first generation CMSs, they were a real pain. That is why we rejected Drupal, WordPress, MODX, Joomla during selection process. I was fed up with systems where you only allowed to toss some blocks and an actual page code is generated under the hood. ProcessWire kind of reverse the whole development process. Here you start with a blank page. You write a neat code and turn to CMS only when needed. There are only few templates serving the whole site. For example all lists are the same, differing only by a line of CSS code: http://gsbelarus.com/pw/en/articles/news/ http://gsbelarus.com/pw/en/articles/post/ http://gsbelarus.com/pw/en/articles/deployments/ The same is true for a story page: http://gsbelarus.com/pw/en/articles/deployments/avenu-centr/ http://gsbelarus.com/pw/en/articles/post/analiz-ispol-zovaniia-polei-v-baze-dannykh/ When needed pages are linked through tags. For example, here all right side bars are built by tags: http://gsbelarus.com/pw/en/front-page/solutions/units/fixed-assets/ There is only one code base. Smartphones, tablets and desktop versions are maintained through responsive CSS. You can check how the site will look on a phone or on a tablet just by shrinking browser window. We didn't use any UI scripting. All visual effects are done with animated CSS. Flexes and columns are used widely through the whole site. In fact, one and half year ago only Chrome and Firefox Developer Edition supported all CSS features we needed. Nowadays the site is rendered correctly in all current browsers except for some quirks in built-in browser of Android 5 and earlier. We wanted to save all old links to hundreds of articles from our old website. So, we imported all article id and made a special template which could deal with old URL, parse it, extract old id and find a matching page in the ProcessWire database. A single line in .htaccess file does the redirect: RedirectMatch permanent ^/gs/modules\.php(.*)$ http://gsbelarus.com/pw/redirect/$1 Also, a desire to save all old topics and links determined that we chose a PHPBB3 for a web site forums. Actually, 70% of development time were spent on seamless integration of PHPBB with ProcessWire. We integrated some Google services. Such as map: http://gsbelarus.com/pw/en/contact-us/ Search: http://gsbelarus.com/pw/search/ Forms: http://gsbelarus.com/pw/front-page/about/vacancies/ Calendar: http://gsbelarus.com/pw/front-page/about/calendar/ As of ProcessWire features table repeaters are used on Contact page: http://gsbelarus.com/pw/en/contact-us/ They define form fields you could see switching radio buttons.
    1 point
  29. Haha here's the quickie then ALTER TABLE `field_<the_name_of_the_float_field>` MODIFY data DECIMAL(12,2); UPDATE fields SET type='FieldtypeDecimal' WHERE id=<the_id_of_the_float_field>; If you need more than two decimals (or more than twelve digits in general), you can safely increase the precision through the module afterwards.
    1 point
  30. There is an option for changing the "created" date via the API using quiet mode: $page->created = $timestamp $page->save(array('quiet' => true)); This only works for created though, not modified. This is what I use for modified - make sure you do this after the last $page->save() or it will be overwritten. $sql = "UPDATE `pages` SET `modified` = '".date('Y-m-d H:i:s', $timestamp)."' WHERE `id` = '".$page->id."';"; $update = wire('db')->query($sql);
    1 point
  31. Hi Horst, I reviewed most of your changes and integrated them: ->optimize now accepts an array options so you can customize behavior per call ->optimize won't overwrite original files, a variation would be created ->optimize will overwrite a variation I had a look at passing the options to size() with the purpose of them getting passed on to this module, but it seems that if the options aren't the usual ones used by ImageSizer they get discarded, so I can't read them - which is a bummer. Do you know of a way around that? Or maybe that's changed in the dev branch? Also regarding setting the quality to 100 before imagesizer runs if the optimizer would be used later - that would be awesome but I don't see a hook for that - do you have any thoughts on that?
    1 point
  32. u shuold use.vagination with 10 - 20 concerto/page hundredos of paginas u run out memory soon if u.cannut u may try stop nested foreacher.use $tours->find( "template=concert ") { edit each felds:: date city text fotos podcast checkbox ``auto join`` save dose this help ? it.shuld u.can loook 2 ``markupcache`` modulos too in end u must use paginasnation other wises u site can not scale
    1 point
  33. It depends on what you want to do exactly. Because the module converts a Youtube link that is in an RTE texatarea field, you already know the id of the video because it is in the link. You could easily insert the image link using the url schema from that first link I posted. Maybe if you can explain your usage scenario we can help more. Where you do want to display the image? How is it connected to the embedded link. It is easy to grab the id of the video from the link in either PHP or JS using a regex, but the video module also stores the id in the PW database (in the textformatter_video_embed table), so this might also be an option depending on your needs. EDIT: Here is the function in the module that parses the video url: https://github.com/ryancramerdesign/TextformatterVideoEmbed/blob/master/TextformatterVideoEmbed.module#L127 Or you can use: $url = "http://www.youtube.com/watch?v=C4kxS1ksqtw&feature=relate"; parse_str( parse_url( $url, PHP_URL_QUERY ), $my_array_of_vars ); echo $my_array_of_vars['v']; // Output: C4kxS1ksqtw
    1 point
  34. This value can be edited in the backend. revert your changes in the module and goto setup/languages and edit your german pack. Click the "translate new file" link at the bottom of the page and use this path: /wire/modules/LanguageSupport/LanguageSupport.module Now you can edit the locale. Hope this helps. I think the LanguageSupport files should be added to the german language pack too..
    1 point
×
×
  • Create New...