Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 09/01/2015 in all areas

  1. all.u need to asks is how many pooeple.switch from wordass to pw ? = many how.many poople switch from pw to wordprass ? = null
    10 points
  2. I haven't spent a lot of time at tutsplus, but get the impression the article is not consistent with what you guys expect from them. Maybe they are just testing the waters to see if there's any interest before investing more time into it? But the article should not have been titled "Introduction to ProcessWire", it should have instead been "A quick look at ProcessWire from a WordPress perspective" – I think the article would have been just fine with that as the title. What I do know about tutsplus.com is that it says Envato on it – a business that largely exists because of WordPress (?). So I'm not entirely surprised by the content of the article. If the choice is them writing something or nothing, I'll take something. The article left me with these impressions: If I'm a WordPress user that doesn't know anything about code, I'm probably not going to look at PW after reading this. But if I'm a full time, or hobbyist web developer that uses WordPress, this article is probably going to make me take a closer look at PW. From that perspective, it's alright. Maybe the article is lacking relative to what it could have been, but we are still better off with this article than without it. The article had a lot more good to say about PW than it did bad. I just hope that they follow through with Tweeting it to their half a million followers, which they've not done yet–we could really benefit from that. Yes there are a lot of Tweets about the article, but looks to be mostly just low-follower bots, and we haven't seen any real increase in traffic here from that. There wasn't a lot of blatantly inaccurate stuff like in that other WordPress-centric article from a year or two ago. I've only read it once so far, but the only thing that made me cringe was the word "mature" in quote "ProcessWire, and its lack of a mature theming model...", which I think is not the right choice of words because there is no theming modal by design, and that is one of the points of ProcessWire. The correct thing to say would have been "If you want to create a website without any development, use a ready-to-go theme with WordPress. If you want to develop a website and have control over the output, use ProcessWire." Hopefully they are just testing the waters and will publish a real introduction to ProcessWire… one where we can tell they've actually downloaded and installed it, and taken the time to learn a little and develop something in it. Or what they should probably do is hire someone like @teppokoivula to write an article for them… someone that already knows ProcessWire well, and knows how to communicate that.
    8 points
  3. another goodie I have found a view days ago: http://www.fnordware.com/superpng/ (Source is at https://github.com/fnordware/SuperPNG)
    5 points
  4. I can see why some might feel frustrated with the article, but to be honest, I don't think it's bad at all. Sure, the quality of the text itself isn't exactly professional, there are no images (quick, someone send him some screenshots!) and the WordPress comparison does feel slightly awkward. Still, most of the points the author makes are entirely acceptable – and even sensible: If you just want to set up a site and don't want to touch or learn any code at all, you're probably better off with other systems. It's true that our community is relatively small. On the other hand the author does mention that "small community translates into striving for quality over quantity", "it has a different target audience", and even goes on to say that "if you run into a problem, you are likely to get a complete answer from the developer or other knowledgeable users on the ProcessWire forums". The author explains how customizable ProcessWire is and how effortless the upgrade process is, especially compared to WordPress. The author actually seems to understand the concept of "Page". Big props for that. In fact, after re-reading the article, I'm not sure I see much reason to be frustrated anymore. The "pros" of ProcessWire are explained nicely, most "cons" are just facts, and in general I don't think that the article is intended to "bash" ProcessWire at all. For anyone even moderately interested in actual web development the article actually makes ProcessWire sound really good, and even the WordPress connection makes sense when you think about it a bit. WordPress is probably what most, if not all, of their readers use or are otherwise familiar with, and if comparing ProcessWire to WordPress makes it easier to grasp, that's fine by me
    5 points
  5. Unfortunately in this crazy world, sometimes business interests (Envato, ThemeForest, tutsplus = $$$$) comes before integrity, honesty and a true technical review of some CMS/Frameworks. I must admit that I sincerely believed that tutsplus (as a professional entity) would redeem themselves with a fair and honest review of ProcessWire. Fortunately, our platform has a great future which is based solely on technical innovation and not hype. These types of reviews will not stop the rapid adoption of ProcessWIre by talented and knowledgeable individuals. Our community may be small but it's composed mainly of the highest level multi-talented designers and developers.
    5 points
  6. ... that now also lives in my Editor. - http://sourcefoundry.org/hack/ - .
    3 points
  7. Greetings, I have always liked Tuts+ but this article on ProcessWire is really deeply disappointing. The idea of setting it up as "ProcessWire vs WordPress" is weird and biased from the start. The theme of the article is essentially this: "The way WordPress does things is good. Does ProcessWire do things like WordPress? If not, that's bad." It's the old flawed "more is better" argument: WordPress must be better because it has more plugins, more people in the community, etc. I'm preparing to add my voice of criticism to the responses. If we all write in about the faults of the article, we can turn this into a positive for ProcessWire. They say the community is small? Well, maybe it's smaller than WordPress. But let's show them that smaller community does not mean less energy or commitment! Thanks, Matthew
    3 points
  8. It is the title that ticked me off. For an 'experienced' publisher like tutsplus I expected at least the title to match the contents. For such a big outfit, my cynical side is telling me they knew exactly what they were doing....they know that was not an introduction to ProcessWire. Compare that to this introduction to Craft CMS. OK, so the authors are different but I expect articles are not published without going through some editorial process. Anyway, am good now... Edit: Ah, I see, Felix also commented about the Craft CMS intro...
    3 points
  9. As I've already commented under the article: It seems like there was an internal job called "write something about processwire" and somebody decided to give it a go because there was nothing else to do and he was bored or something. All his other (wordpress) articles are packed up with images, code examples and so on. It's a shame :/
    3 points
  10. Thanks for that MichaMichaMicha, At first I was excited about the article...people have been waiting for this....Then reading it, it turns out (not-so-under the hood) this is an article about WordPress! What cheek! Underneath all the veneer about talking about PW, he/she is just bashing PW and not really saying much about its strength. Nothing about its raw power! I don't think the writer has even used PW before!! What a load of tosh! My frustration is not vented at you....but the writer of the article... That was supposed to be an intro...for crying out loud! .
    3 points
  11. Hi Tony! Welcome to the forum I think one of the fundamental things to consider with projects like these, is to actually look and analyse the existing data - the structure, the format, the quality, and any relationships there may be. It's almost going through the normalisation process but perhaps not as strict. It would be a good idea to take every column in the existing database to decide how that will be represented in the ProcessWire site. Probably, some of these will be simple translations - Varchars will become Text fields, and Ints will still be Integer fields. But what will be more important is the data in these fields - does it vary with just about every single dam? Is it a value representing Yes/No? Are there only a few values for that column that all dams can potentially use? If so, do the values all use the same spelling of words, or are some mixed case or have weird formatting or spacing issues? When you have a set list of values to choose from, this is where you can decide how to store the data in ProcessWire - Page fields, PageTables, Options field, etc. If your source data quality is good, your job will be easier. If it's not, there will be some work involved in preparing it so that it is clean to work with. You may already have a good idea of how your data looks or is structured, but I usually like to do some form of planning on paper or using a spreadsheet to map out the source data to the ProcessWire templates and fields. Doing the important work now will save you hassle later on down the line and will really help you to make the search feature more functional. As an example: In ProcessWire, I imagine there would be a template created called 'dam'. You might add the following fields to this template (just for starters): title description location (FieldtypeMapMarker) height (integer/float) length (integer/float) capacity/volume (integer/float) country (Page field/Options field?) built (date) opened (date) For each dam, a Page would exist somewhere in the page tree, using the 'dam' template. As you've already seen the Skyscraper profile, you can probably look at that for more ideas on how to structure things though
    2 points
  12. Hi Tony! Create a template for dam and attach all needed fields to the template. Then export database table to CSV file and use this module to create dam pages from table rows. http://modules.processwire.com/modules/import-pages-csv/
    2 points
  13. Maybe you could use http://modules.processwire.com/modules/process-dashboard/ ?
    2 points
  14. @kongondo Cannot agree more. It's sad to see such bad journalistic work being published by a platform like tuts+.
    2 points
  15. I spent way too much of my spare time with trying to produce an overly complex site backup module. Anyway - it is here in a pre-release state. I somehow have to get rid of the monster. Features: Use Storage Providers There are two base classes for Storage modules and three reference implementations: Remote Storage Driver This is a baseclass for construcing plug-in modules that allow to send data to a remote storage. You need to extend all abstract functions: connect, disconnect, upload and getConfigFieldset Implemented Examples Storage Mail Sends a backup as mail attachment. If the file size exceeds a set limit it will get split. It uses PHPMailer library as WireMail does not support attachments. @todo: For now this mails all in a single smtp session - maybe thats not so safe? Remote Directory Driver This is a baseclass for construcing plug-in modules that allow to send data to a remote storage and list and delete old files. You need to extend all abstract functions: connect, disconnect, upload, find, size, mdate, delete and getConfigFieldset. Implemented Examples Storage FTP Allows to connect to an ftp server and upload, list and delete files. Uses standard php ftp functions. Storage Google Drive Allows to connect to google drive server and upload, list and delete files. Uses the php google api. You have to create a Service account with the google developers console and add the key file to the plugin directory (or another directory if you specify a relative or absolute path to that file). s. https://developers.google.com/identity/protocols/OAuth2ServiceAccount#creatinganaccount I don't use the OAuth token process because it is not more secure. Once there is a renew token (which is necessary to avoid user interaction) it is as powerful and insecure as a keyfile. It is just more complex as it needs a callback url for registering. @todo? In case you can prove otherwise I will implement the callback registration. Run from the web or the command line It's allways better to have a regular cron job running. But sometimes you might need webcron Command Line You just need to call backup.php with the id of a backup job and it will be run Web Cron There is a token that starts the backup job from the web if passed as a url parameter. You can specify whether you want logging the http stream or not. You can also specify whether you want a job to be repeated within a certain timespan. This is for using unreliable webcron services by hitting the backup multiple times. @todo Consider integration of cron.pw @todo I use the init function of an automatically loaded module as a hook. This seems a bit strange. Is there better ways to do that? Log to mail, file and admin You can recieve logs by mail (on success or failure), log to a file and see log in a an admin page: Configure I built a admin interface that - besides the log viewer - features a list of jobs: and an editor for the job (which is too extensive to be described in detail): Dicussion I am not too sure on how to solve the issues indicated with @todo. My main concern are the hooking (init of an autoload module for the moment) and locking (none, no singleton for the moment). As for hooking I only know of the alternative of using a page where one would have (afaik) to use a special template as the admin template is secured or hook into the security functions (which would probably call for a singleton module). Concerning the locking issue I think it might be good if the Admin Class would lock if it is updateing something. For the moment this is the same class that runs the backups thus it would also lock the admin if there is a backup running. And it would lock the whole site if it is on autoload (as I use the init hook). Lastly I should reconsider the logging and maybe try to better integrate it with processwire logging. I would appreciate comments and suggestionsn on these issues. I appreciate your test results. Don't be took frutsrated if something goes wrong, this is at an early stage but afaik it should be running. Please find the modulle on: https://github.com/romanseidl/remote-backup
    1 point
  16. New processwire - responsive - site live on www.rugpijnweg.nl Thanks to this forum I found vxda who did all the coding while the design was done with his colleague Piotr from 7thavenue. Rugpijnweg.nl uses procache, and gets high scores on gtmetrix.com. It still needs some better way to optimize images and serve scaled images. Any feedback much appreciated, this site is meant to be fully responsive. Used Modules: - Procache (thanks Ryan) - ModulesManager (thanks soma) - ProcessJumplinks (thanks mike-rockett) - Thumbnails (thanks apeisa) - Get Video Thumbs (thanks adrian) Still some minor stuff needs done, happy to incorporate any feedback to make it better!
    1 point
  17. You can create tabs with FieldsetTab. Instead of just grouping fields this fieldset will additionally create a new tab, where fields will reside.
    1 point
  18. Added Macrura's Autocomplete Tags in Image Field to the drop-ins. Thanks Macrura !
    1 point
  19. Hey Sérgio, I've read that too but after doing some research it's really not as clear cut at StackOverflow might want it to be. As far as I know crawlers don't use Accept-Language typically, and the plugin does absolutely no redirection when it is not set so it should not change their behaviour. This is what Google's documentation says, and others too, and it's also why I implemented the plugin the way it is implemented. From the "Location-aware crawling" page from Google, you can read this: This means that if your website is serving purely based on Accept-Language, there might be trouble cause Google isn't sending any typically, I've seen this happen in the past. The plugin does none of this, it's in your hands to implement a good solution. What you want to do : DO use <link> with hreflang to help the crawlers find other pages. Don't serve multiple languages from the same URL — always use lang.example.com/.. or example.com/lang/.. It's confusing to users not to and they can't send pages to their friends in the "right" language. Don't use GET parameters to set anything language related. Don't prevent the user (or crawlers) from switching languages and become trapped in a language that isn't their own — aka always have a language switcher in a prominent place and don't detect more than once. Read all the "International" section very carefully and find a solution that works for you. Localization is not an easy topic. Note tough that Google tells you what alternative methods supported (tough there's a huge red warning box at the top of the page) : In each case : 1) AutoDetect language isn't a location (geo-ip or else) aware plugin. 2) Discussed earlier, wouldn't recommend for various reasons but might still work. Google says "usually don't". 3) That's the firewall's job! However, if you guys still follow best practices and have trouble being indexed, I'm open to look at more "advanced" solutions. …But more complexity means more points of failure and that's something I usually want to avoid. Just want something that's accessible to beginners and works in the most common cases.
    1 point
  20. @uiui - Sorry you are having troubles. I just tested and the only allowed filetype is mp4 (which is correct). I am wondering if perhaps you converted an existing files field to a video field? If so you will need to manually change the valid file extensions on the Details tab. Either that or add a new Video field from scratch. Please let me know if that takes care of things for you. Also, please note that the built-in ->play() uses the Sublime video player which is no longer available. At some point I may add built-in support for another (or several) players, but for the moment you will need to provide the player for the front-end yourself. I like http://mediaelementjs.com/ but there are lots of others.
    1 point
  21. Hi MuchDev, The asterisk wildcard was not part (and probably still is not part, haven't actually checked) of the original ProcessRedirects shipped via the modules directory. That was one of the reasons I did not include the functionality. However, and more importantly, it's sometimes hard to tell what that wildcard implies. Sure, when used at the end of a path, it means "everything until the end", but, when used in the middle, does it represent 1 segment, or all segments? It could catch paths that were not meant to be caught. I may look at implementing a proper solution for the importer to detect these, but that won't be soon. As a recommendation, swap out the asterisk wildcards with {all} - this is a good base level. So, in your case: Source: path/subpath/{all} Destination: newPath Have a look at the documentation on wildcards and smart wildcards - Jumplinks doesn't use regular expressions or asterisk wildcards. There's also a new wiki page containing examples.
    1 point
  22. This is very true. I did do a pretty good job of making it confusing. However, I guess I was wanting to make it a bit more cleaned up for other users who would be looking at it. Ill take a look into Lister and see what is involved with tweaking the css/etc in the styles.
    1 point
  23. Also keep in mind that you can change the max. number of child pages the tree will show before paginating results. If you find it cluttered maybe reduce the number a bit.
    1 point
  24. The page tree is a very organized way to view things. It's only as cluttered as you make it. Alternatively you can use Lister/ListerPro, or tweak the admin theme styles.
    1 point
  25. I prefer to use PHP variables whenever possible. But there are some cases where it wouldn't be applicable or possible, like with a call to WireArray::implode(), etc. If there's an instance where you need to supply an output format (like with markup) before the variables are known/available, then the only way to do it is to {tag} it with placeholders. This is useful when providing an output format for something ahead of time that's going to be repeated over many times. For instance, the supporting markup for PW's Inputfield forms is generated in this manner, so that a module or core can specify the output format without having to get involved in the runtime rendering of the form. But it's not really a question of which strategy you should use, because most of the places where we support {tags} using variables isn't a possible alternative.
    1 point
  26. There's a fundamentally difference between your example strings. The first one is using tags, that are mostly used in conjunction with WireArray::implode and WireArray::explode or in newer versions you can also use them in the backend to create custom pageList labels in templates. These use the wirePopulateStringTags() helper function, that does replace the tags with their value out of a known or provided context. Nothing as fancy as a templating language, but nice for simpler usage. The second one is plain php, but the curly braces are actually optional as long as you're just calling a direct property of the variable. If you want to call deeper nested properties, then you need the curly braces (e.g. "<span>{$page->parent->title}</span>"). One last notable difference, while the tags are just strings, and therefore work no matter how they are created, the php string interpolation does only work when using double quotes.
    1 point
  27. Agreed, but I guess PW has never had this many tweets about it as in the last two hours: https://twitter.com/search?f=tweets&vertical=default&q=processwire
    1 point
  28. Not sure if it's been posted yet, but there is an article on: http://code.tutsplus.com/articles/introduction-to-processwire--cms-22624
    1 point
  29. FrontendUser uses a temp PW User object. All existing fields should be saved, but it's done via PW api, not the PW admin create user process (haven't looked into it...). Send email after user registration? You could write a plugin hook after FrontendUser save() method... /** * Save the temp User object * @param User $user Temp User object to save * @return boolean Sucessful (true) saved or not (false) */ protected function ___save($user) { if (empty($user->name) || empty($user->email) || $user->pass->hash == '') { return $this->_('Register process unexpected failed!'); } if ($user->save()) { return true; } return $this->_('User registration failed!'); } Hook after save() method. If return value === true (exactly true! not "== true") you can send a mail via PW api or load a module to send the email...
    1 point
  30. No problem. Checkout the following code for more insight. All written in the browser, so it's not tested. But you get the idea. <?php // Create a form using the API. You can thank soma > $form = $modules->get("InputfieldForm"); $form->action = "./"; $form->method = "post"; $form->attr("id+name", "form"); $field = $modules->get("InputfieldText"); $field->label = "Name"; $field->attr("id+name", "name"); $field->required = 1; $form->append($field); $field = $modules->get("InputfieldHidden"); // A hidden field to populate which product should be stored in the session $field->attr("id+name", "product"); $field->attr("value", $product->id); // You can use the value (i.e. $product->id) to save the data $field->required = 1; $form->append($field); $submit = $modules->get("InputfieldSubmit"); $submit->attr("value", "Subscribe"); $submit->attr("id+name", "submit"); $form->append($submit); if($input->post->submit) { $form->processInput($input->post); if($form->getErrors()) { $out .= $form->render(); } else { // Always sanitize user data $name = $sanitizer->text($input->post->name); $product = $sanitizer->text($input->post->product); $session->name = $name; // Using $session->name you can get this data back on another page $product->product = $product; // Idem dito $session->redirect($pages->get("PAGE_ID")->url); // The page (PAGE_ID) you want to send the user to (i.e. the checkout page) } } else { $out .= $form->render(); }
    1 point
  31. Something else I am going to need shortly is the ability to check whether the CSV import appends rows, or overwrites - I actually haven't tested - does it currently append, or overwrite? Maybe if append, then it's ok because you can use the "Reset" to clear and then it is effectively an overwrite. Also, the ability to export to CSV would be very handy - it would be much easier to make major edits via Excel and then import when done. Just some ideas for when you're bored, although I might need these sooner than later - if so I'll send you a PR.
    1 point
  32. Hey kongondo - I know you are super-busy at the moment, but I actually have a use case where it would be much easier if it did store empty values. Because I am foreaching through column names I actually ended up having to put "ND" (for No Data) in the cells to get the desired result. This isn't a huge problem because I control the data going into the Matrix tables, but I think it might be a nice option to have. Thanks!
    1 point
  33. I'd suggest using this to create the foreach. It's less error prone than using brackets. <?php foreach($a as $b) : ?> … <?php endforeach; ?> The loop itself seems to ok, so maybe take a look at the output of this just before the foreach: <?php echo $page->PortfolioRepeater1->count(); ?> Also having <p> tags inside of <span> or <h3> is not allowed by html standards, so maybe correct this.
    1 point
  34. Yes - good find, that was the model i used for setting up the range filtering.. $.fn.dataTable.ext.search.push( function( settings, data, dataIndex ) { var distance = parseInt( $('#search_distance').val(), 10 ); var distmax = parseFloat( data[3] ) || 0; // use data for the distance column if( isNaN( distance ) || distance <= distmax ) { return true; } return false; } ); and i'm using the ion rangeslider, which after testing a few different ones seemed to work best
    1 point
  35. They are actually not using anything other than the stock Foxycart admin; Though i did setup Orderdesk and it looks great, but i don't think they ever used it. @BernhardB - thanks for checking it out! The filter is really dead simple.. 1.) jQuery Datatable with custom filters, using PW page IDs as data attributes on the cells, e.g. data-filter="1234" 2.) when you change any of the filters, there is an onchange trigger to redraw the table with the filter; 3.) change some numerical inputs to the sliders 4.) empty divs above the table, one for each filter type, and those are populated at the same time when the filters change
    1 point
  36. Came across this from contentessentials with an interesting sum up and migration: http://www.contentessentials.com.au/resources/essentially-cms/the-processwire-advantage/ http://www.contentessentials.com.au/resources/essentially-cms/migrating-a-web-application-from-drupal-to-processwire-a-case-study/
    1 point
  37. Hey kongondo - I have just started using this on a site for the first time - it is going to be awesome! The one thing I would like to be able to do though is have better control over the row/column selectors. What I need to do is be able to limit the matches to children of the current page because I will be using this field on several page trees on the site that have the same structure, so a template selector will grab all these pages, not just the one under the current parent. I think if the PW core supported 'page' as an argument that could be used for the parent selector I'd be OK. parent=page, template=rows_template Perhaps your module could have an extra config settings to limit to the current page? Or perhaps an option to use custom php code to find the pages - like you can when defining a page field. Is that something you'd be willing to support? Any other thoughts on how to make this work? Thanks again for your work on this! PS Another feature suggestion - any chance of adding a browser warning alert for the reset button? I know that nothing is actually lost until the page is saved, but I bet some users will think they have lost everything already and start typing again, not realizing they can simply reload the page. Maybe the button could also be named "Clear Data" or something more descriptive than "Reset". My thoughts continue I am not sure how to handle this, but I have a checkbox field on each of the pages that make up the columns - this is to determine whether the page should actually be included in the table. The thing I worry about is someone unintentionally unchecking this which will result in data loss the next time the page with the Matrix table field is edited and saved. Other than a warning in the description/notes of the checkbox field, I am not sure how to protect against this. Could you module perhaps warn when rows/column are about to be discarded - with an alert that actually says which ones are being deleted from the matrix table? Any other ideas? Also, what about an API method to create data - it would be nice to make it easier to create an import routine from an existing database.
    1 point
  38. Btw.: I would like to see the wiki shut down to prevent confusion. The texts should be merged in the main site and tutorial section somehow.
    1 point
×
×
  • Create New...