Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 02/15/2016 in all areas

  1. It occurred to me that a good addition to the forums would be some way for PW users to indicate support for a module idea. Similar to the Wishlist subforum but for functionality that belongs in a module rather than in the core. I'm thinking mainly of commercial modules, although if someone wanted to take up a module request and release it freely that would be cool. So users could propose a module idea, then others would vote for it (using likes or some special voting option) so that a vote means "I'd buy that", with the expectation of pricing in the general ballpark of Ryan's pro modules and Apeisa's PadLoper. As a beginner-intermediate developer I'm really enjoying working with PW and learning as I go - the API is so intuitive that I've been able to build my own solutions to things that in another CMS I would have been reliant on someone else's module to achieve. But there are things that I know are beyond my current skills, and for those things I look to third-party modules. My clients are non-profits and small businesses so I'm never likely to have the budget to commission a custom module alone. But there might be other PW users out there with similar needs and maybe that demand would make it worthwhile for an experienced developer to take on a proposal and release it as a commercial module. Currently there isn't a way to measure the demand for modules apart from occasional forum posts like "Is there a module that...?" Any thoughts on this? Here's a module request to start off with: I would be happy to buy a full-featured event calendar module. I've searched the module directory and the forums and Lindquist's module is the most feature-rich I've seen, but it's in an alpha proof-of-concept state and some important functions aren't implemented. Features I would be looking for are: Calendar grid interface in admin, allowing for easy addition and editing of events. (Nice but non-essential) Week and day views in admin, in addition to month view, with drag editing for event date and duration (I'm dreaming of something awesome like the dhtmlxScheduler interface or Fullcalendar interface). Although drag operations would really need an undo to correct accidental edits, so this may be more trouble than it's worth. Events are edited in a modal window, to avoid losing one's place in the calendar. Recurring events, with user-friendly selection of recurrence options. The ability to individually edit or remove an event that is a child of a recurring event (i.e. make an exception for that individual event). (Nice but non-essential) A couple of out-of-the-box minimal rendering options for the frontend (read-only calendar view, list view). This is the kind of module I need frequently. I've been lucky that I haven't had a client request a full event calendar since I've been using PW, but it's only a matter of time. I'm sure there are other PW users who need this and who would, like me, be happy to pay for such a module.
    5 points
  2. Greetings, Good discussion... There are many ways to go. SVGs are more like DOMs within your main DOM instead of classic images. They can be used like images, but the real power comes from being able to dynamically manipulate the code behind the images. There are a couple of different paths here. Generally: - Start with something like Adobe Illustrator or Sketch to create your SVGs. - Create CSS classes to manipulate the lines of the SVG files. - Use a simple code editor to tweak the SVG elements just like you would with an HTML document. How to include the SVGs: 1. Embed the SVGs inline using <img> tags. Simply upload the SVG to your "images" directory and reference it like any other image in your ProcessWire application. 2. "Include" the SVGs in your template. You can either (A) use the same "include" function you use for other ProcessWire files, or (B) directly load the SVG code into your template. Option A is easier to maintain and allows the same SVGs to be dynamic in multiple templates, which then opens up all kinds of other possibilities! 3. Use something like Raphael to manipulate the SVG further. But this is not necessary, especially for relatively simple examples. The syntax for manipulating SVG styles is not always the same as HTML styling. Here are a couple of good references: https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_started/SVG_and_CSS https://www.w3.org/TR/SVG/propidx.html https://www.w3.org/TR/SVG/styling.html As for help and resources, here are some general discussions: http://tympanus.net/codrops/2015/07/16/styling-svg-use-content-css/ https://css-tricks.com/using-svg/ https://www.smashingmagazine.com/2014/11/styling-and-animating-svgs-with-css/ Thanks, Matthew
    4 points
  3. update: v 2.0.0 - added support for ajax loaded fields including repeaters - added sanitization for the jquery selector
    4 points
  4. We'll what to say here ? Documentation depends on individuals who want to spare time and contribute. If something is not documented yet you can find it mentioned in threads, blog or just by looking for classes in the core. These threads can help you out what you are looking for: https://processwire.com/talk/topic/3145-multiple-views-for-templates/page-2#entry32876 https://processwire.com/talk/topic/4367-using-page-renderoptions-and-template-cache/ https://processwire.com/talk/topic/1102-to-render-or-not-to-render-thats-the-question/ http://www.flamingruby.com/blog/mapping-processwire-page-render-process/ https://processwire.com/talk/topic/1946-page-render-isnt-generating-the-same-output-as-viewing-a-page/ https://processwire.com/talk/topic/5394-page-renderfilename-confusion/ Camilo Castro documented and explains here how his wire render pattern works: https://medium.com/@clsource/the-wire-render-pattern-806bf6d6097a#.jquhbxejn https://github.com/NinjasCL/wire-render-pattern https://processwire.com/talk/topic/11199-mainphp-inflexibility/ https://processwire.com/talk/topic/11836-wirerenderfile-on-child-pages/
    3 points
  5. $pa1 = $pages->find("something"); $a2 = array(); foreach(){…} $pa2 = (new PageArray())->import($a2); foreach($pa1->import($pa2)->unique() as $p){ if($pa2->has($p)) … else … }
    3 points
  6. Tracy Debugger for ProcessWire The ultimate “swiss army knife” debugging and development tool for the ProcessWire CMF/CMS Integrates and extends Nette's Tracy debugging tool and adds 35+ custom tools designed for effective ProcessWire debugging and lightning fast development The most comprehensive set of instructions and examples is available at: https://adrianbj.github.io/TracyDebugger Modules Directory: http://modules.processwire.com/modules/tracy-debugger/ Github: https://github.com/adrianbj/TracyDebugger A big thanks to @tpr for introducing me to Tracy and for the idea for this module and for significant feedback, testing, and feature suggestions.
    2 points
  7. https://github.com/ryancramerdesign/ProcessWire/blob/master/wire/core/Inputfield.php#L184 Are you sure Inputfield::render is called at all? Maybe InputfieldSomethingElse::render is called.
    2 points
  8. @matjazp - can you please see what happens if you specify different sleep intervals. I am occasionally getting 1.0 etc, but changing the sleep value usually results in something with 4 decimal places. @Ipa - I expect you might have debug mode turned off. That feature currently needs it turned on, although I'll see if it makes sense (or is possible) to get that to work without it on. On another note, the current version has a new debug mode badge which I think is a very useful reminder: Also, I have dealt with the issue of incorrect location reporting when calling the TD:: or shortcut/alias methods, so location reporting is now on by default. I think it's a handy addition. For those of you who are updating, you'll need to set this manually, so check the "Show Location" checkboxes in the module config settings. This means that there is really no reason to ever call the native Tracy methods, so I have removed that info from the first post and the Github ReadMe.
    2 points
  9. Hi @jrtderonde and welcome to the forums. The first thing I notice is that you are uploading the file directly to the assets/files/page_id/ location. You should upload to a temp directory first, then $new->image->add('full_temp_path'), and then unlink from that temp location.
    2 points
  10. In the weekend I just put together my Latte engine module - should have done this way earlier, it's much clearer and better than my previous non-module attempt. I'll share it after using it for a while to see everything works as expected. It's for PW3.
    2 points
  11. A small contribution: Add an option to have ability to use Self-Signed Certificate on a given SMTP server with WireMailSmtp and PHP >= 5.6 What PHP say - source : https://secure.php.net/manual/en/migration56.openssl.php HOWTO: ----------- 1) In file smtp.php, class smtp_class, we add a member variable and a small function : /* Allow self signed certificate */ var $smtp_certificate = false; Function AllowSelfSignedCertificate($allow = false) { $version=explode(".",function_exists("phpversion") ? phpversion() : "3.0.7"); $php_version=intval($version[0])*1000000+intval($version[1])*1000+intval($version[2]); if($php_version<5006000) return; if($allow) { stream_context_set_option($this->connection, 'ssl', 'verify_peer', false); stream_context_set_option($this->connection, 'ssl', 'allow_self_signed', true); } else { stream_context_set_option($this->connection, 'ssl', 'verify_peer', true); stream_context_set_option($this->connection, 'ssl', 'allow_self_signed', false); } } and, in the Connect() method, call the function just in before we check for the result of stream_socket_enable_crypto : Find : $this->OutputDebug('Starting TLS cryptograpic protocol'); if(!($success = stream_socket_enable_crypto($this->connection, 1, STREAM_CRYPTO_METHOD_TLS_CLIENT))) Replace to $this->OutputDebug('Starting TLS cryptograpic protocol'); $this->AllowSelfSignedCertificate($this->smtp_certificate); if(!($success = stream_socket_enable_crypto($this->connection, 1, STREAM_CRYPTO_METHOD_TLS_CLIENT)) 2) In the file smtp_message.php, class smtp_message_class, add a member variable : /* Allow Self Signed Certificate */ var $smtp_certificate = 0; In the method StartSendingMessage() , assign the new member variable: $this->smtp->smtp_certificate = $this->smtp_certificate; 3) In the file WireMailSmtpAdaptator, class hnsmtp, add a member variable : private $smtp_certificate = false; and in the method set_var_val(), add a case smtp_certificate for our checkbox : Find : case 'smtp_ssl': case 'smtp_start_tls': case 'smtp_debug': case 'smtp_html_debug': Replace : case 'smtp_certificate': case 'smtp_ssl': case 'smtp_start_tls': case 'smtp_debug': case 'smtp_html_debug': In the class constructor, add : $this->emailMessage->smtp_certificate = $this->smtp_certificate; 4) In the WireMailSmtpConfig.php file, add a field : add : $field = $modules->get('InputfieldCheckbox'); $field->attr('name', 'smtp_certificate'); $field->label = __('PHP >= 5.6 - Allow self signed certificate'); $field->attr('value', $data['smtp_certificate']); $field->attr('checked', $data['smtp_certificate'] ? 'checked' : ''); $fieldset->add($field); 5) In the WireMailSmtp.module file, add a settings to the getDefaultdata() : Find : 'valid_recipients' => '' // email addresses of valid recipients. String that we convert to array at runtime. Add after (take care of comma ','): 'smtp_certificate' => 0 // allow or not self signed certificate (PHP >= 5.6) Result : Hope it help. Sorry for my english
    2 points
  12. Greetings tooth-paste, I also love SVGs and look for ways to use them anywhere I can. For years, I have been wondering why they are not more widespread, but I think there is a resurgence in their popularity now! The level of control with SVGs is amazing, and when you couple them with the flexibility of ProcessWire to manipulate the SVG elements, the possibilities are tremendous. In theory, you could have an entire site built from an SVG DOM. You probably already know about these, but I wanted to include them here: http://raphaeljs.com https://d3js.org http://snapsvg.io Each one of the above resources has its advantages. Personally, I really like Raphael. Thanks, Matthew
    2 points
  13. Here is a simple tutorial how to enable the Justify capability in CKEditor First, download the plugin at http://ckeditor.com/addon/justify . Copy the "justify" folder to the "plugins" folder under ckeditor in your modules directory and upload to server. Edit the field that is using the ckeditor and go to the input tab.. Under CKEditor Setting > CKEditor Toolbar insert the following line where you want the icons to appear: JustifyLeft, JustifyCenter, JustifyRight, JustifyBlock Use ACF? choose "No" Under Extra Plugins insert: justify
    1 point
  14. Hi I've been working on a site that needed a calendar. Specifically it needed a calendar with support for some rather iffy recurrence patterns. This is all still pretty rough but I have written two modules. Calendar : Implementes basic event recurrence expansion using four fields: calendar_start calendar_end calendar_rrule calendar_exdate these fields are created on install (but not removed!) and are added to the template: calendar-event which is created on install (but again not removed on uninstall!). the calendar-event template is intended to be expanded to represent the needed calendar event structure. The ProcessCalendarAdmin provides a calendar admin gui. the modules and a slightly more detailed readme can be found on github https://github.com/lindquist/processwire-calendar I'm not sure how much more time I can/will spend on this, so here it is in case anyone finds it useful
    1 point
  15. A quick update - I have added a row of buttons to various parts of the PW admin at the bottom of the PW panel. The big news though is that I found out the FireLog() actually works with Chrome too. You just need this browser extension: https://github.com/MattSkala/chrome-firelogger https://chrome.google.com/webstore/detail/firelogger-for-chrome/hmagilfopmdjkeomnjpchokglfdfjfeh This is awesome for debugging AJAX calls.
    1 point
  16. And we are back... I now recall I have seen this error before (when I was playing around with enhancing the Comments Manager). Yeah, the error is not very intuitive. ProcessCommentsManager should at least catch the error and give a more informative message. What is happening is this. In line #92, Comments manager is calling a constant from the Comment Class. The Comment Class is not a module but a .php file. It is loaded/required_once in FieldtypeComments.module line #22. So, unless you at created at least one field of type Comments, you will get that error. That field does not have even have to be added to a template yet for this to work. If such a field is present, it calls FieldtypeComments.module which in turn loads the Comment.php class and everything is fine and dandy. So, long story short, first create a field of type Comments before attempting to load ProcessCommentsManager. I would also file a request on GitHub for @ryan to consider catching the above error and returning a more meaningful error message for supersusers.
    1 point
  17. The error message is pretty verbose... try $this->set('successMessage', '<h2>' . $pages->get(1032)->message_sent . '</h2>');
    1 point
  18. Thanks a lot Matthew!! I have done a few things with D3.js and it's amazing what can be done, just browsing the examples page is really great! For example, I am a BIG fan of this guy and his work, be sure to check it out.
    1 point
  19. Just a quick comment as there has already been lots of great info offered up. SVGs are an amazing way to make interactive data visualizations, whether you use charts, maps, or colored icons, or diagrams. They are especially cool if you using data binding techniques via something like Angular, Meteor, or React, or one of a gazillion other new JS frameworks
    1 point
  20. I was going to suggest JSON is easy (if available), but http://php.net/manual/en/simplexml.examples-basic.php looks as if it works with XML like json_decode() does with JSON.
    1 point
  21. Thanks, seems like I've missed the key point in TEF or simply messing it up with another module
    1 point
  22. No, they don't need Template Data Provider for any reason, those modules are not related. In fact, the template factory works the same as the description of your implementation. You also have a $view API variable available, which connects you to the template engine (Twig, Smarty, Jade at the moment). The controller logic stays the same, because the module abstracts this in a way that it's the same for any supported template engine. But as you said, the syntax of your "views" is different depending on the template engine. Latte and Twig don't use the same syntax, so you'd need to adjust that. That being said, I think it's uncommon to switch the template engine during a project
    1 point
  23. Have you tried adrian's brand new debugger module ? https://processwire.com/talk/topic/12208-tracy-debugger/
    1 point
  24. u.haves anee caches ? likes tamplate cache on ?
    1 point
  25. You need to specify the name of the file field used in the repeater (each repeater item is technically a page). Thus, iterating over $page->document_downloads returns pages and you need to explcitly state which field of that page you want to access, just like with a regular page. foreach($page->document_download as $download) { $file = $download->name_of_your_file_field; $fileurl = $file->url; }
    1 point
  26. 11 month old this topic but I run in same problems described in post #5 (PW 3.0.8) After digging a while I found out that Javascript puts WireTabs outside the form whereas normally (for example in ProcessPageEdit) the WireTabs are inside the form. You need to adapt the css for the form in this case like: #content .container > form { /*instead of: top: -2px;*/ top: 0; } #content { /*instead of: padding-top: 1px;*/ padding-top: 0; } This solution works for me.
    1 point
  27. Latte is not that popular as Twig or others so it's not a surprise It's a great template engine though imo.
    1 point
  28. There's no reason why this shouldn't work, and there should be no complicated tricks involved in making it work. There's something else going wrong, probably in a part of a script not shown here. Letting JS pass on information that should already be implicitly available to PHP means hiding the problem, not solving it. Usually, AJAX requests should implictly pass on the cookie if the requested page is on the same server as the page requesting it. If you can verify that the wire cookies are getting sent along, you'll have to look for something else. Did you try stripping down your getitems script to the bare minimum, then clearing the cache to make sure you don't see stale data, and introspect the data sent and received in the browser's debugger?
    1 point
  29. Add the role name (or ID) as a post data (preferable with some kind of encoding/encrypting to make it more secure). Then you can get the role in your endpoint php file and do things accordingly. http://api.jquery.com/jquery.ajax/
    1 point
  30. Hi guys, Thanks for reporting those errors. I'll find some time to make this module 3.x compatible in the next few days, I guess disabling the new FileCompiler for the external mpdf library should do the trick.
    1 point
  31. New "Method Info" panel to give a quick rundown of each method and their available aliases/shortcuts:
    1 point
  32. It's usable (e.g. processwire.com is using it already) but it's still in heavy development, so there aren't any guarantees. You'd make up you own mind if you want to use it. You could always give it a try locally.
    1 point
  33. I'm eager to try version 3. Is it in a usable state for production sites? I've got a site that is lite duty, more brochure-like and isn't using custom modules.
    1 point
  34. Two days ago, an idea about a new admin theme came to my mind. Some hours later, I've crafted a first concept in Adobe Fireworks.... The look and feel of the admin is important Two months ago, I've introduced some teachers into ProcessWire. They were none-technically people. At the end, they knew how to use the admin panel to create content or update a gallery on their new page. However at some points, they got confused with parts of the admin theme -beside the problems with our concept on how to use fields and templates for creating content. I think one factor why Wordpress became so large, was the great Adminpanel. It works well and easy (as long as you have a blog and not a twenty-plugins-for-text-pages-site). Editing content on a daily basis is the main task of my customer. I've to take this aspect serious. Problems I wanted to solve Have the page tree always visible. If I do not click the right link, it will be closed after I've finished editing my site More visuals like icons. Simplify some workflows. Creating 3 or 4 pages can result in multiple unnecessary clicks. More focus on important links like the tabs. Guide my customer through some action. Help them to repeat simple tasks. The concept First: Nothing is perfect and its not possible to find one single solution for everything. This was just done in a couple of hours and it's only the first iteration. Quick action button Next to the ProcessWire logo is the quick "Quick Actions" button. It should be possible, to configure it like: "Create a new Page with Template X with page Y as a parent". Use it for skyscrapers, news or galleries. (Yes i know, the arrow is pointing upwards. This is wrong) Two column layout The page tree is always visible (as long as we are in the pages view). It can be navigated as the normal page-tree. If you click "edit" it will become highlighted. Every action that would take you to a new page, would be displayed in the other half of the monitor. Speaking of a "half monitor" - I think that most people use a screen resolution of atleast 1300px. The sidebar should take up to 1/3 of this. On smaller screens, it will become hidden by default or we just simply step back to single pages for each view. If the content is to long, the sidebar becomes scrollable. Page tree I like the Template Decorator made by mindplay.dk. It fits the concept well with black outline icons for every type of template. The same icons could be used in the Quick action menu. I'm note sure what to do with the "move" action. To Do list Think more about the behavior of the elements. Design the modules view. Rework the search and the top menu. Options to "brand" the panel for agencies while keeping the ProcessWire logos. What happens if we are on mobile (small screen) devices? Listen to your feedback.
    1 point
  35. There are handy Grunt and Gulp tools, e.g. http://mattsoria.com/killersvgworkflow/ For a site that used tons of icons (including :hover versions), we used Grunt tasks that: - scanned a folder full of SVGs - created an SVG sprite - wrote a .scss file with classes for each icon (based on some simple naming conventions) - plus: did the same thing, but as PNGs (IE9 / old browser fallback) I wouldn't use SVGs in HTML emails though. There are still various email clients (web-based, standalone desktop or mobile apps) that don't support it. https://css-tricks.com/a-guide-on-svg-support-in-email/
    1 point
  36. I love SVG Take a look at caniuse.com for the list of browser support: http://caniuse.com/#search=svg - I agree with @Mike Rockett - if a browser doesn't support SVG, then I don't support it. If you are going to allow your editors to upload SVG files, be sure to install the SVG validator: http://modules.processwire.com/modules/file-validator-svg-sanitizer/ because they can be a security risk.
    1 point
  37. I read this article from WordFence recently. It gives you an idea as to how these attacks are done in detail. Worth a read/watch: https://www.wordfence.com/blog/2016/02/wordpress-security-attack-platform/
    1 point
  38. A single master key page (or storage location) is definitely involved, but it's not enough (you need to secure that key too, or you'll deliver the encrypted information in the database together with the key to decrypt it to the hypothetical attacker). You could still use my approach from above, just instead of creating a fresh key from scratch, use what I suggested as a password recovery mechanism to populate the users' profiles with the master key encrypted using their password hashes (basically, leave out step 2a). Everything else like creating a temporary session key and storing the key for field decryption and encryption - just in this scenario the master key - session-encrypted stays. So the steps would be: Once: First step is again to create an asymmetric public/private key pair for admin, save the private key off-site (best print it out too and store it in the safe) and puts the public key into config.php (you could e.g. use openssl to generate that key pair) Once: Admin creates a symmetric key (master key), encrypts it using the public key and stores it Admin creates users and assigns their passwords (or changes the passwords for existing users) In the same step, admin caclulates the user's password hash, decrypts the master key in config.php using his private key, then encrypts the master key with the user's password hash and stores it in a field in the user's profile Now, steps 1 to 6 with the exclusion of step 2a from above once again work, only instead of separate keys, every user decrypts and encrypts their copy of the master key. This should be a simple as it gets while you still avoid storing an unencrypted key at any point. There would be the theoretical possibility to use the admin's password hash to symmetrically encrypt and decrypt the master key in config, but that would mean there could be only one admin user (it would also introduce a predetermined breaking point when admin changes their password and forgets to update config.php with the re-encrypted key, which would result in garbage in the key copies assigned to users from this point on and, in the worst case, service information encrypted using such an invalid key). This system still has one known weakness: if an attacker acquires a copy of the database, they only need to crack one password to decrypt all service credentials. If you want to avoid that, things get exponentially more complicated because you would need to create a unique key for every service, store an admin-encrypted version of it somewhere and store (as well as update) a table of key <-> service mappings for every user. In turn, as reseting the user password every time access to a service is granted isn't practicable, you'd need a mechanism to encrypt the key for the user without knowing the user's password, leaving you with asymmetric encryption for that part. The user can't be asked to carry around and type in their private key though, so you need to store that private key for them encrypted using the user's password hash. It's another layer of indirection, and, as mentioned in my first reply, you'd need some kind of automated key infrastructure to make this easy to handle in code, and you'd also have to update two key fields and the whole mapping table with every password change (I'm not even going into the possible mayhem if password change by the user and service grant by the admin manage to overlap).
    1 point
  39. ok is the installation in a subfolder ? e.g. www.yourdomain.com/ <- index.php // index of pw or www.yourdoimain.com/subfolder/index.php //subfolder is the name of your folder Than you have to change to # RewriteBase / RewriteBase /subolder/ # RewriteBase /~user/
    1 point
  40. Quite a clever bit of code, that, obfuscating base64_decode in the hope of avoiding security scanners. Can't hide eval(), though.
    1 point
  41. Great! You might want to move that function to a file that is called by all the others, so you have it available averywhere, like _func.php or even the head file if you prefer.
    1 point
  42. Successfully tested PIA with PW 3.0 and set the version to 1.0.0 stable now.
    1 point
  43. Added to the list of things to do.
    1 point
  44. I am noticing that some editors are forgetting, or not seeing that they have to publish the items/pages in a PageTable fields. I think in many/most cases you would want all published automatically. Or perhaps it could be an option for the field - the dev can decide whether editors can choose to save unpublished if they want. Alternatively I think it would at least be helpful if there were publish and hide toggles (like the new main page tree action buttons) so it is easy to quickly publish all subpages rather than opening each one up. I would prefer the first option though. Anyone else think this would be useful?
    1 point
  45. I use a similar solution to a _strings.php file, and include it from my _init.php file (prependTemplateFile), so that it's available to all templates. But I bundle all the translated values into a new function (which I'll call _t(), but you could name it whatever you want). So you can call upon that _t() function anywhere that you'd call a __() function. For instance, in your /site/templates/_strings.php file... function _t($label) { static $labels = null; if($labels === null) $labels = array( 'Yes' => __('Yes'), 'No' => __('No'), 'Maybe' => __('Maybe'), 'And so on...' => __('And so on...') ); return isset($labels[$label]) ? $labels[$label] : $label; } From there, you can replace any __('label') call with _t('label'). In this manner, you only need to translate your _strings.php file, and all the other template files can use the translated labels. For the cases where you need to translate text that only exists in a particular file, then you'd continue to use the __() function as usual.
    1 point
  46. Earlier today I was thinking of a use/case situation where I might use parenting or page fields to tie together some related pages. The better approach was page fields and really the only reason I was even trying to make it work with parenting is that it would be easier to explain to a client how to set it up. This is a case where a client-oriented admin interface could make it easy to select the related pages and declare the relationship but hide the actual details of how that relationship is expressed in PW. In my pre-PW work I've done a lot of custom admin pages for clients to use. It really pays to keep these very focused on application-specific work flow, terminology, etc. I don't expect clients to accept the level of abstraction necessary to work directly with the PW data. The admin pages provided by core should be a tech tool, guaranteed to be scalable and capable of accessing anything any application might have. Sure, there's room for improvement but what about putting that effort into easing the task of constructing a more focused and mediated admin interface for clients to use. I haven't looked deeply at how the admin pages work now but given the modular way things tend to be done in PW I'd think we could do something to streamline the building of custom admin pages. Sort of an admin construction kit. Let the client deal with "skyscrapers" and "cities" rather than "pages" even though underneath, they are all PW pages. Reuse the basic underlying CRUD while adding application specific prompting and tools to help the user with the more focused task of working on a city, skyscraper, category, etc. Build a custom interface where clients can do their routine tasks easily. if they end up with an odbball situation beyond the scope of what you built for them you can always talk them through using the standard admin interface, and if that becomes a habit you extend their custom interface. Personally, I don't think a single admin interface is ever going to be optimal for both programmer and client. Those are different audiences with different needs. I'd be wary of anything that compromises the ability of the standard admin pages to deal with huge amounts of data etc.
    1 point
  47. Great work Philipp! I agree that the admin experience for non-tech or unexperienced users is really important for any CMS. I think that while ProcessWire has a nice admin it could really benefit with some of the ideas you're trying out. I had the same thought about what makes Wordpress so famous and user friendly and ultimately the design of the admin has played a big part in it. I want to stress out that I have nothing against the core admin ( ), but I think It could still be improved to achieve a more modern look (whatever that means) and be more user-friendly, which for me is the top concern towards using PW in commercial projects. I really like what some people have done with themes and such, but I still always use the default one. I would be awesome to have some special place in the forums to talk about design of the admin (that ships in core). Mostly to talk about the actual user experience and the user interface, and posting ideas (and iterating) with the core team. I am thinking that some of these ideas would eventually make it to core and I can see my clients (and people in general) benefiting a lot.
    1 point
  48. @ryan, coming from mindplay this should be taken as a big compliment
    1 point
  49. That is how I usually have my tags organized. And having things this way came super helpful in one project: Client wanted to automate most of the content rotating on the frontpage and main sections. Rotation needed be based on time - some articles were about winter, some about christmas, some about summer, some about some holidays in between etc. They had already tagged all their articles (200+) with tags (about 20) and even the thought about choosing "active months" or "startdate - enddate" for each article felt taunting. What we did was to extend those tags to have "active months" selections. This needed only little additional logic, but was a breeze for client to setup (editing 20 tags instead of 200 pages). And if someone decides to move Christmas from December to July... well - we are ready for it! And no - I didn't have a clue about that kind of "autorotation" idea when I build the site.
    1 point
  50. Thank you both for the Captacha exemple/idea. I'm always very intersted about the way Ryan do stuff i have to say.. (and i m sure i m not the only one ;-) Regards, Alchime
    1 point
×
×
  • Create New...