Leaderboard
Popular Content
Showing content with the highest reputation on 06/03/2013 in all areas
-
This is an exciting announcement for me to make! After having selected ProcessWire as our 2012 Best Free CMS winner in our Critics Choice CMS Awards, we decided it was time to put our money where our mouths are and make the move ourselves. I'll get into more detail soon but for now, I'm excited to present the new CMS Critic (developed by the illustrious Ryan Cramer). Note that it is still propagating so if you don't see a site that looks like the screenshot below, DNS hasn't fully updated. I'm just too pleased to wait the full 24 hours to make the announcement ;P I also did this write up on the experience: http://www.cmscritic.com/cms-critic-is-now-powered-by-processwire/ Check it out: CMS Critic23 points
-
Easily insert any complex HTML, Javascript or PHP output in your ProcessWire content by creating your own Hanna code tags. This module is based loosely on the WordPress Hana Code Insert plugin. A Hanna code tag looks like [[hello_world]]. A Hanna code tag with attributes looks like [[hello_world foo=bar" bar="foo]] using HTML style attributes or [[hello_world foo=bar, bar=foo]] using ProcessWire selector style attributes. After installing the module, you define your Hanna codes in Setup > Hanna Code. These Hanna codes that you define can then be entered within your body copy (or other text where you allow) and they will be replaced with the values defined or generated by your Hanna code. A common use case is to embed scripts or other bits of HTML or codes that would usually be stripped out by an editor like TinyMCE. However, Hanna codes can be more than just static snippets--they can be dynamic PHP or Javascript that outputs different things according to the request. PHP-based Hanna codes have access to the entire ProcessWire API. Hanna code accepts named attributes in the tag that can be passed as variables to PHP and Javascript Hanna codes. These attributes can be specified either in HTML attribute format or ProcessWire selector format. In either case, quotes should be used around the attribute value when the value contains whitespace or a comma. How to install Place the module files in /site/modules/TextformatterHannaCode/ In your admin, click Modules > Check for new modules Click install for TextformatterHannaCode Now to go Setup > Fields and locate the Textarea field(s) that you want to use Hanna codes with ("body" for instance). When editing the field, click the details tab, and select "Hanna Code" as the Textformatter. Save. Now go to Setup > Hanna Code and start defining your Hanna Codes! You may want to use one of the examples from this document to get started. Tag format Below is a Hanna code tag named hello_world with no attributes. If you pasted this into your body copy, you would get whatever the replacement value is that you defined. [[hello_world]] Below is a Hanna code tag named hello_world being passed attributes of foo, bar and foobar. If this were a PHP-based Hanna code, it would receive the variables $foo, $bar and $foobar: [[hello_world foo="bar" bar="foo" foobar="foo bar"]] Below is the same Hanna code tag as above, but with attributes more like ProcessWire selectors. You can use whatever format you prefer. Just note that unlike regular ProcessWire selectors, quotes (single or double) are required around any value that has whitespace. [[hello_world, foo=bar, bar=foo, foobar="foo bar"]] How to use Please make sure that you have completed the How to install section first. Then in your admin, go to Setup > Hanna Codes. Each Hanna code that you add has a type of either: Text/HTML, Javascript or PHP. The Text/HTML type is literally self explanatory in that your [[custom-tag]] is replaced with exactly the text you paste in. Anywhere that you type your [[custom-tag]] in your body copy will be replaced with exactly the static text you defined. More power opens up with the Javascript and/or PHP types of codes. These codes execute at runtime and thus can contain specific logic to produce different results. In fact, PHP Hanna codes have access to the entire ProcessWire API and are executed in the same manner as template files. Your PHP-based Hanna code should simply "echo" or "print" the replacement value. PHP example Create a new Hanna code with the name "children". Select "PHP" as the type. Paste in the following for the code: foreach($page->children as $child) { echo "<p><a href='$child->url'>$child->title</a>"; } Now go and edit a page that has children. In the body copy, enter [[children]] in the place where you want the output to appear. View the page, and you should see the rendered list of links to children. PHP example, part 2 Now lets take the above example further... Go back and edit your "children" Hanna code, as we are going to modify it to respond to a "parent" attribute. Change the code to this: if(isset($parent)) { // If $parent is an ID or path, lets convert it to a Page $parent = $pages->get($parent); } else { // otherwise lets assume the current page is the parent $parent = $page; } foreach($parent->children as $child) { echo "<p><a href='$child->url'>$child->title</a>"; } Go back and edit the page where you previously inserted the [[children]] tag, and change it to: [[children, parent=1]] (specifying the homepage) or [[children, parent=/path/to/some/parent/]] if you want to try something else. View the page and you should now see it showing the children of the homepage (or of another parent you specified). Please see the Javascript and PHP usage notes on the Hanna code entry screen. Security There are major security implications with a tool that will let you enter unfiltered text and code from your web browser. As a result, Hanna codes are meant for definition only by superusers and we recommend keeping it that way. Download Download the Hanna Code module from the ProcessWire modules page or from GitHub.12 points
-
Hi all This module was sponsored by Jason as per this topic: http://processwire.com/talk/topic/3566-email-image-module-development/ It's quite similar to horst & ryan's EmailImage module, but supports multiple email addresses for sending emails to different parts of your site, also allowing you to select different templates. There is also a delimiter option whereby you can split up the email's content and have text appear in the body or sidebar etc. Here's a video to show you what I mean. The video may well be of interest to other module authors as I used some Ajax to push what can normally be done in the module config - hope you like it There was the temptation to build on the EmailImage module with this one, but I already had code for my Helpdesk module (work in progress) that parsed emails using Flourishlib and wanted to use that code instead for this one. EDIT: Also worth noting is that unlike the EmailImage module, this doesn't come with a pre-built gallery template for the front-end. This is intentional as you could pipe emails into any part of a site you like, so I couldn't make assumptions as to usage of the content. You can download it via the modules directory.6 points
-
Sorry about that, I went back and forth on the name a couple times and ultimately entered the wrong class name in the modules directory. It should have been TextformatterHannaCode, not ProcessHannaCode. I have corrected that. I was throwing an exception when I shouldn't have. I'm pushing a correction for this. Technically they are part of the same program "Hanna Code", even if that program has two modules. But I know what you mean. I'm adding "(Process)" to the Process one, just so that the two next to each other can be differentiated. Also, one more section I just added to the README: Using Hanna Code from the API If you want to populate Hanna Code from the API, you can do so using the render() method, like this: $hanna = $modules->get('TextformatterHannaCode'); $page->body = $hanna->render($page->body);5 points
-
where to start? from out of my head: http://processwire.com/talk/topic/3265-fredi-friendly-frontend-editing/ http://processwire.com/talk/topic/3602-pw-online-installer-download-of-latest-pw-install-to-server/ http://processwire.com/talk/topic/3691-tutorial-a-quick-guide-to-processwire-for-those-transitioning-from-modx/ http://processwire.com/talk/topic/3745-hanna-code/ http://processwire.com/talk/topic/3474-admin-custom-pages-module/ and most importantly: http://processwire.com/talk/topic/3498-karena-savannah-cramer/5 points
-
Went yesterday to the cinema to see "Drupal & Joomla 6", and was not disappointed. Highly recommended!4 points
-
2 points
-
2 points
-
Already nominated my favourite. You might be able to guess what it is2 points
-
A quick update. Ran a page speed test on pingdom and it came back with a 588ms load time (faster than 95 percent of websites)2 points
-
2 points
-
2 points
-
Wow, this is one sexy module. Thank you! Just installed on my newly processwire'd CMS Critic!2 points
-
Updated this to v1.0.6. You can now add optional roles that can bypass maintenance mode (superuser will always bypass regardless of whether it's selected or not!). @ceberlin - this should help with your scenario2 points
-
This module is now complete: http://processwire.com/talk/topic/3743-processemailtopage/ Thanks to Jason for allowing it to be released to the community2 points
-
hi all, new PW site launch: http://www.ohmspeaker.com/ some of the modules that were helpful or essential for this: cropimage formbuilder fredi importcsv minify piwik analytics procache batcher redirects version control template decorator modules manager page link abstractor sitemap xml admin custom pages markup simple navigation (for the sitemap) forum topics related to this site dev: Legacy Site URL redirects: http://processwire.com/talk/topic/3641-redirect-legacy-url-to-new-pw-page/ Clean up spelling: http://processwire.com/talk/topic/3519-use-api-to-spellcheck-whole-siteclean-up-spacing/ hashes in URLs on change selected product http://processwire.com/talk/topic/3496-help-with-url-param-change/ FormBuilder http://processwire.com/talk/topic/2904-how-to-redirect-by-id/ http://processwire.com/talk/topic/2821-3rd-party-send-conditionally/ http://processwire.com/talk/topic/2820-use-session-to-remember-form-selections/ Custom Menus http://processwire.com/talk/topic/2787-custom-menu-not-related-to-page-tree/ other notes: The skyscraper profile provided the example for how to get started with the advanced product search, a.k.a. the speaker finder. The standard search has been extended to show results in different categories. there is some use of Soma's word limiter for the news teaser text, and for making meta descriptions out of body fields, from this topic: http://processwire.com/talk/topic/3429-how-to-set-text-linecharacter-limits-in-templates/ the design is built on twitter bootstrap framework Fredi proved to be totally essential for the client, in being able to rapidly edit things without having to find things in the admin. This site is going to replace an existing site on a different domain (ohmspeakers.com). At some point we weren't sure if/how we would be able to handle the shopping cart element, and then found foxycart, which proved to be the best choice, very flexible, and easy to implement for this type of site. FC is hands down the simplest and easiest way (imho) we could achieve things like the legacy product pages, where there are various parts and upgrades displayed on 1 page. this version is sort of a "v1", and will be expanded/improved a lot for a v2, which would happen in about 4 months.. BTW - these speakers are really good; i now own 3 pairs ... they look great and do sound totally amazing...! -marc1 point
-
Hi, today I came across a site with a really good presentation tool in HTML5: pik7. English Livepresentation is here: http://pik.peterkroener.de/ The blogpost and video screencast is in german only, but the tool (code) itself is in english. Its' hosted on Github and is GPLv2.1 point
-
Congratulations, Ryan! Best wishes to your daughters and your family! Can we hope you'll publish a post called "Real-life multitasking for web developers"?1 point
-
Antti - to answer your questions: This grated on me every time I wrote the word "category" and I should probably just change it to "parent page" as that's more in keeping with ProcessWire's terminology (to newcomers "Category" makes sense, but PW is all about enticing people to learn new things after all ). I'll change this in the next update. It is hardcoded to the images field for now. I realise this is a bit of a gamble that they haven't renamed/deleted this field, so should probably add an extra config option for this. The reason I didn't for now is that it then led me to thinking (as you have) about other file types and then I thought about allowing different fields for different templates and started to get a headache I should at least do the first part and allow the admin to select a different field, plus add more checks for attachment filetypes. As a result of those two points, the next version really needs: Rename "category" to "parent page" throughout Allow admin to select image field Add more checks for filetypes attached to emails Add field for whitelist of email addresses Maybe allow for other attachments (why not? It's simple enough ) Not sure when I might get around to these as there may be other stuff in the pipeline before then1 point
-
Thanks ryan! And thanks again to Jason for letting my run with some ideas. I could just as easily completed this by making the admin enter comma separated values in a textarea field (the easy way to go) but I wanted to make input foolproof and the idea was already in my head. And now some techy stuff: I had some fun working out the ajax behind adding new rows and settling on saving the field data as a JSON string in the end (which is fine because nobody is going to set up dozens of email accounts!) but if there are any suggestions for improvement there then please let me know as it seems to me now that there are endless possibilities for "add another row" type setups in module configuration. Before that I was trying to overcomplicate things and have the new rows save in the background as an array, but if I intercepted the page save, ran the ajax request and then use jQuery to finish submitting the form then it wouldn't save the other form data. I abandoned that idea completely (but left the function in the module file for reference). In the end, keeping it simple worked out better as running ajax upon saving the config page slowed the page save process down as it essentially sent two requests - converting the data to a json string and saving to a hidden field is instantaneous by comparison To those not following all that, my eventual solution was to KISS1 point
-
Awesome thanks for the feedback. I've noticed the pageviews are up 300% from previous.1 point
-
Yes, very beautiful and well working site. And excellent front end coding also, very sharp and clean design. And I have visited only with mobile!1 point
-
Ah I think you're best off with setting the outer wrapper template to '||' and add opening and closing UL after. I then also think it would be nice to have a include in the top level thing.. and if has_parent would allow multipe it would already be easy... have to think a little more. With checkboxes it would still be the same issue with parents.1 point
-
Indeed, procached and blowing the speed charts out of the water. Also using formbuilder for our nomination form on the awards page and its working well so far.1 point
-
If you're no aware of this, you can get the selectors string that is used to produce a resulting PageArray with $a->getSelectors(). http://cheatsheet.processwire.com/?filter=getSelectors&advanced When printing this out in your templates html, I noticed that if you have used a "<" operator it will cut off the string from there, because it's rendered in html. To get around this simply use: echo htmlentities($result->getSelectors());1 point
-
This looks brilliant Ryan, thank you! There are parallels with a nice aspect of Textpattern here also, TXP 'Forms' (snippets). Brill!1 point
-
I don't know if something like this is on the way, but I see two possible solutions. One is to have a text field that would serve for both (but you wouldn't have the url check ability, nor the page select interface) and do something like in the template or a process module: $link = is_numeric ($page->field) ? $pages->get($page->field)->url : $page->field; The other is to have both fields, page and ulr, on the template (maybe grouped under a fieldset) and write that only one will be used. On the template you would have something like: $link = $page->pagefield->url || $page->urlfield;1 point
-
Awesome work, @cmscritic! One of the best PW websites I've seen so far! I'd also love to read a case study on the WordPress/ProcessWire conversion. Specially on how you setup the categories/topics and tags.1 point
-
Thanks Fernando for your contribution. A Latin American version is indeed sorely needed. I'll be more than happy to collaborate with you so we can have two (or more) rock-solid Spanish versions. As a matter of fact, I was planning on revising my original work for a new Web project in Spanish that I'll be starting in about a month, and enlist the help of a native speaker from Spain to double-check everything. My translation is for an older version of PW, so I suppose there must new fields to be translated anyway. As regards to your question about how to get started with the translation, if I remember well, I did everything from the control panel. As it's not always easy to determine the context of the original text in English, I think it's best to move back and forth between a live site and the control panel to sort out the intended meaning, which I did not do fully enough in the first place. Jacques1 point
-
1 point
-
This new module, Hanna, should make people familiar with MODX happy1 point
-
Looks like a very useful module, thanks for sharing it Ryan. I just tried to install it using ModulesManager, and I can't install it right after downloading as it requires Textformatter module to be installed. TemplateFile: Module ProcessHannaCode requires: TextformatterHannaCode #0 [internal function]: Modules->___install('ProcessHannaCod...')... Couldn't it be installed when installing the process module? Edit: When I create a new hanna code and not enter a tag name and save I get an error and can't see the form.1 point
-
1 point
-
Greetings, Excellent news! Looking forward to seeing details of your development procss! Thanks, Matthew1 point
-
Wow! Looking forward to seeing the real thing once the DNS is fully updated.1 point
-
Hi. I'm native Spanish speaker (from Argentina) and I'd like contribute to Jacmaes's translations or make a new one for Latin America. I like the idea to have a "formal" translation for an admin. When I say "formal", I mean use "usted" instead "vos" or "tu", but I'd want to know what is the opinion Ryan about that. BTW, I would like to take this opportunity to thank to him this fantastic CMS. I've not done any site using PW yet, but I realize its potential, so I want to express my deep adminiration for his great work. Going back to the translation subject, I would need some advices or tell me what I should do to make a new Spanish version. I've started translating what Jacmaes did into Control Panel of PW. Am I in a good path? Thanks in advance. Best regards Fernando1 point
-
Sorry chaps - been missing in action. Should be back around now! Joss PS: Did I miss anything?1 point
-
Wow! Nice one; you've been busy! Yes, there have been two or three questions from MODx'ers in the forums about something like this - the ability to randomly, directly call snippets, chunks and TVs within the body field/area in TinyMCE. Previously they've been pointed to shortcodes and tag parser. Hanna is certainly more powerful and would solve this issue easily. I can't wait to see the creative ways people use this . Thx for the module!1 point
-
Wow! Great module, Ryan. Gonna create a bunch of snippets for quick prototyping and trying things. Expect a new wave of MODx'ers on the forum. These folks love using code snippents the way Hanna Code allows it! Edit: Pete, we had almost the same thought!1 point
-
Just a note to all MODx'ers - I think this is a nice way to transfer some snippets/chunks to ProcessWire as well if people want to go down that route and have some they used to use in body text. Obviously it's not quite the same thing (potentially more powerful depending on your needs), but anything that helps make a transition easier is good in my book Very useful, powerful module ryan!1 point
-
And it's already got me wondering how easy it might be to build the presentations in ProcessWire and use this system... Hmmm....1 point
-
Oh, another owzim question $val = $pages->find("template=mytempl, sort=-counter, limit=1")->first->counter + 1;1 point
-
Greetings Everyone, Sorry I missed this discussion until now. Yes, I am working on a ProcessWire book and companion Web site. As a technical writer/developer/designer, ProcessWire has been an inspiration on multiple fronts: creating Web sites, going deeper with design/development, and writing/documenting the system. I've been working regularly on the book project, and I have about 175 pages completed already. I'll have much more to share in the coming weeks. Stay tuned, Matthew1 point
-
Nice! It didn't know you can do that. We definately need a markup guide and templating guide with different approaches. There are some great posts hidden in this forum. If only I could find some time to collect all that information.1 point
-
This would not be scalable. A large quantity of abstracted links generated over a long period of time are not something that an uninstaller could remove in one request. That's one of the reasons why I'm not totally happy with abstracting links. LinkMonitor actually does go further than just abstracting links. It also locates broken links to images and such, and then logs them (and emails you, if you want). So it's a nice upgrade from PageLinkAbstractor, and also compatible with it. I'll have to get back to work on it.1 point
-
Awesome news, congrats ryan! I nearly wet myself Must be a combination of ___smoothTalker() and ___giggity()1 point
-
1 point
-
Thank you guys. Yes I love doing the simple things and I loved to cheat in school. Anything more than list causes me headaches.1 point
-
Attached is an update to /wire/modules/Fieldtype/FieldtypePage.module that lets you do this, once you replace your existing file with the one below. You should be able to specify just about any native or custom page field after the dot, like above (where we're using 'title'). If anyone can test it out to confirm I'd appreciate it. I'll commit to the source after testing a little more locally too. FieldtypePage.module This type of syntax is already used by repeaters. But if you mean something like: "repeater_field.referenced_pages.title%=$query", I don't think the attached update would let you do that, though havent' tried. If it doesn't, it's probably not much of a stretch to support it though.1 point
-
Ryan, Many thanks for this module, I just used it to add 436 users. There were a small handful of things that weren't initially clear, so I detailed them below for anyone else trying to import users. If you plan to import passwords, you need to open the module and add FieldTypePassword to $fieldtypes protected $fieldtypes = array( 'FieldtypePageTitle', 'FieldtypeText', 'FieldtypeTextarea', 'FieldtypeInteger', 'FieldtypeFloat', 'FieldtypeEmail', 'FieldtypeURL', 'FieldtypeCheckbox', 'FieldtypeFile', 'FieldtypePassword', // add this line ); Since users are pages and all pages require a title, your CSV will need to have a title column. In my case, I duplicated all the usernames into that column — so name and title are the same. In order for title to show as a connection option during your import, you need to add the title field to the user template file. To do this, go to: Setup > Templates (open the filters area at the top, and choose "show system templates". Select the user template and add the title field. One other thing to note, be sure to have a roles column in your CSV with roles for each user. I forgot that during my first test import and all the users were set to guest. You should be all set to import your users.1 point