Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 02/10/2015 in all areas

  1. http://www.illustratorsaustralia.com/ http://quidditas.com.au/ - built for http://www.nomadgraphics.com.au/ http://nineteen23.com.au/ - built for http://www.nomadgraphics.com.au/ http://www.eatdrinkroyal.com/ - built for http://jacinabox.com.au/ http://selkiemoon.com/ - built for http://www.nomadgraphics.com.au/ http://everypicture.com.au/ http://otoshimono.org/ - design by the artist http://lovida.com.au/ - design by http://monodesign.com.au/ Cheers Marty
    11 points
  2. Some time ago I developed a module (FieldtypeImageExtra) which extends Fieldtype Image with the ability to add custom fields to an image. This worked well but it had a somehow restricted applicability and did not meet all of our needs. There of course are other useful image modules like CroppableImage or ImageFocusArea, but up to now there was no possibility to combine image cropping with custom fields support. So you had to decide whether to add image cropping or the possibility to add custom fields because each of those modules sets up their own field type (and input type) which cannot be combined. The new module ImageExtra allows you to have both functionalities. You can get the module from GitHub. For more informations have a look at this blog post. If you notice any problems or unexpected behaviour please let me know.
    4 points
  3. I developed a new module ImageExtra which allows you to combine custom fields and image cropping (for example). Please have a look at this forum post. This module will not be developed any further. Be careful: if you decide to use ImageExtra with an existing site you'll have to start from scratch. So please make sure to backup your data - just in case you need to go back -, because the old settings are not compatible with the new module's format.
    3 points
  4. Hi everybody, First of all: Thanks to everybody for keeping the community alive. Every time I search for something in the forum I find the solution. Great work! I wanted to share a small module with you / my first one. I use it in order to switch the user language on page load. Processwire GeoInfo GeoInfo is a small module that Implements Geoplugin PHP web service. Please donate to "geoplugin.com" in order to keep the service alive. The Module ads two methods to retrieve data from the web service. $page->GeoInfoIP('IP ADDRESS'); you can enter the ip address manually. If left blank the server remote address will be used. The retrieved data is then stored to the active session, in order to limit the requests. The web service gives back following data. 'geoplugin_request' 'geoplugin_status' 'geoplugin_credit' 'geoplugin_city' 'geoplugin_region' 'geoplugin_areaCode' 'geoplugin_dmaCode' 'geoplugin_countryCode' 'geoplugin_countryName' 'geoplugin_continentCode' 'geoplugin_latitude' 'geoplugin_longitude' 'geoplugin_regionCode' 'geoplugin_regionName' 'geoplugin_currencyCode' 'geoplugin_currencySymbol' 'geoplugin_currencySymbol_UTF8' 'geoplugin_currencyConverter' for e.g. $page->GeoInfoIP('IP ADDRESS')->geoplugin_countryCode; will give back the country iso code. $page->GeoInfoLatLong('LAT', 'LONG'); Enter Latitude and Longitude in order to get following information: 'geoplugin_place' 'geoplugin_countryCode' 'geoplugin_region' 'geoplugin_regionAbbreviated' 'geoplugin_latitude' 'geoplugin_longitude' 'geoplugin_distanceMiles' 'geoplugin_distanceKilometers' for e.g. $page->GeoInfoLatLong('40.712784', '-74.005941'); will give back the city name "New York City". Todo store places in json file / check if place exists implement nearby "service" https://bitbucket.org/pmichaelis/processwire-geoinfo
    2 points
  5. Hi Apeisa, Thank you so much. I have enabled the demo mode. Here are the details. Front-end Demo - bluevr.webcreate.lk Back-end Demo mode - bluevr-webcreate.lk/processwire (The username 'admin' and password 'bluevr2')
    2 points
  6. Building my own portfolio site and figuring out if I should use snap.svg, Rafael or building my own svg-related functions...
    2 points
  7. There were changes from Ryan to the core image field with the commits to PW 2.5.18. I need to look to this but am not able before tommorow evening. @adrian: have put it on my todo. @martijn: regarding your PM, I try to add this within the init method from InputfieldCroppableImage.
    2 points
  8. oh, I didn't notice that topic, I would have responded as well. Maybe it's a good idea to add an external url field. What do you think?
    2 points
  9. I guess this is as good a place as any to make my first forum post. I stumbled across PW some months ago, and I'm just now starting to learn how to use it, and when I found your BlueVR profile I liked it's looks, and installed the profile to begin learning the ins-and-outs of Processwire.
    2 points
  10. Seems like I've got the first job thanks to the developer directory
    2 points
  11. Introducing the AutoLinks Text Formatter, part of the ProcessWire ProFields package of modules. What it Does This Textformatter module automatically links your specified phrases/words to your specified URLs. This is an excellent SEO and accessibility tool for creating automatic contextual links with little effort. If there are pages that you commonly link to in your site from your textarea/rich text fields, then this Textformatter can save you a lot of effort, automatically linking to those URLs. Furthermore, contextual links of this sort are also considered especially valuable from an SEO context. Because this module is a Textformatter module, the work it does happens at runtime. That means that this module can easily be applied to existing sites, no matter how large. Usage Example We'll use processwire.com as an example. Throughout processwire.com, we routinely use the terms "API", "selector", "template", "template file", "$page", "$pages" and more. In the past, I've spent a lot of time in TinyMCE manually linking these terms to the appropriate pages, as it is a helpful cross-reference for users. For example, when the term "API" appears, I want to automatically link to the API Cheatsheet page at http://cheatsheet.processwire.com. With the AutoLinks Textformatter module, I can now automatically link to all my important terms from all existing and future body copy. If one of those links happens to change in the future, no problem, as I only have to update it in one place (if at all). The benefits here are a real win win for the users of processwire.com, myself (in time savings) and our performance with search engines that analyze these contextual links. We hope that you find AutoLinks to be a huge benefit to your site(s) and time saver for you and/or your site editors. AutoLinks is available for purchase as part of the ProFields package in the ProcessWire Store.
    1 point
  12. This is a beta release, so some extra caution is recommended. So far the module has been successfully tested on at least ProcessWire 2.7.2 and 3.0.18, but at least in theory it should work for 2.4/2.5 versions of ProcessWire too. GitHub repo: https://github.com/teppokoivula/ProcessLinkChecker (see README.md for more techy details, settings etc.) What you see is ... This is a module that adds back-end tools for tracking down broken links and unnecessary redirects. That's pretty much all there is to these views right now; I'm still contemplating whether it should also provide a link text section (for SEO purposes etc.) and/or other features. The magic behind the scenes The admin tool (Process module) is about half of Link Checker; the other half is a PHP class called Link Crawler. This is a tool for collecting links from a ProcessWire site, analysing them and storing the outcome to custom database tables. Link Crawler is intended to be triggered via a cron task, but there's also a GUI tool for running the checker. This is a slow process and can result in issues, but for smaller sites and debugging purposes the GUI method works just fine. Just be patient; the data will be there once you wait long enough Now what? For the time being I'd appreciate any comments about the way this is heading and/or whether it's useful to you at all. What would you add to make it more useful for your own use cases? I'm going to continue working on this for sure (it's been a really fun project), but wouldn't mind being pushed to the correct direction early on. This module is already in active use on two relatively big sites I manage. Lately I haven't had any issues with the module, but please consider this a beta release nevertheless; it hasn't been widely tested, and that alone is a reason to avoid calling it "stable" quite yet. Screenshots Dashboard: List of broken links: List of redirects: Check now tool/tab:
    1 point
  13. FrontendUserLogin Module to handle frontend user login / logout. Also should work with Persistent login for users (mode: automatically) out of the box Version 0.3.1Requires PW 2.5.5 (fields defined by array) Download Processwire module page: http://modules.processwire.com/modules/frontend-user-login/ Bitbucket Repo: https://bitbucket.org/pwFoo/frontenduserlogin/ Usage Readme file Module isn't available anymore, but it's planed to replace FrontendUserLogin and FrontendUserRegister with the new FrontendUser module which is not released yet. A new support topic will be created after FrontendUser module is added to the PW module repo. FrontendUser module
    1 point
  14. Hi all, quick question. Is there a way to clear the template cache when a page using a specific template is sorted with drag-and-drop? I see you can clear it when a page is saved, but there doesn't seem to be an option for when it is sorted. It's not a big deal if there is not, as I can just go in and save a page and the cache will be cleared. Just wondering if I'm missing something. Sorry if this has already been asked. I googled, but couldn't find anything.
    1 point
  15. This API was never intended to be used by developers other than for modules, that's why there is little documentation besides the thread you've mentioned. The best solution would be taking a look at the files itself: wire/core/Inputfield.php & all those wire/modules/Inputfields/*.module. Most of them do have a fair amount of comments, so you should get along after some time. P.S. It would be nice to ask such questions in the thread it belongs to.
    1 point
  16. Just playing with pinegrow. This really speeds up template building and style changing. Good find !
    1 point
  17. I know that this "trick" is used for just few methods - those that could be possible be run hundreds of times per request (like the url). So the performance issue is probably something that is probably not meaningful for normal hooks (where method is called only once or twice), but meaningful in commonly used methods.
    1 point
  18. Maybe Fieldtype::formatValue to get before output and format it. Like Textformatters.
    1 point
  19. The problem you're strugling with is keeping repeaters and pages seperate. You're searching for pages with at least one repeater item, which has created_for checked. You either need to only search for repeaters $repeaters = $pages->find("template=repeater_wwww_slider, created_for=1, include=all"); // repeaters are hidden by default foreach($repeaters as $icon){} or you need to check in the foreach if the current repeater's checkbox is checked. $somepages = $pages->find("selector for your pages with repeater"); foreach($somepages as $somepage){ foreach($somepage->wwww_slider as $icon){ if($icon->created_for == 0) continue; // Your stuff } }
    1 point
  20. Gayan, looks great. What about putting site into demo mode and allowing backend login?
    1 point
  21. Two thumbs way up for anything SVG Started using it on the web in 2004 (for server generated vector downloads) - it's been a long wait, but it's awesome to finally see it supported in all browsers!
    1 point
  22. @gebeer I will report back once I have played around with it a bit more. At the moment Pinegrow is my little playground that I go to when I have time to play. Pinegrow has the effect of making you feel like a kid again.
    1 point
  23. Thanks Marc. I'd just get him to sketch some scrambled eggs
    1 point
  24. The api way would be not using array notation but one of these. $page->repeater->first(); $page->repeater->eq($i); $page->repeater->last();
    1 point
  25. Sounds good! I am definitely going forward with the subscription module, so I am indeed interested in having the API as a separate module. I would make it a pretty simple configurable module: public function init() { require_once(__DIR__."/stripe/lib/Stripe.php"); Stripe::setApiKey($this->stripeApiKey); } public static function getModuleConfigInputfields(array $data) { $inputfields = new InputfieldWrapper(); // Option to set the Stripe API Key $fieldApiKey = wire('modules')->get('InputfieldText'); $fieldApiKey->name = 'stripeApiKey'; $fieldApiKey->label = __("API Key"); $fieldApiKey->description = __("Set your live or test secret Stripe key."); if(isset($data['stripeApiKey'])) $fieldApiKey->value = $data['stripeApiKey']; $inputfields->add($fieldApiKey); return $inputfields; } And possibly a default currency as $this->defaultCurrency.
    1 point
  26. Ha, think I guessed right. This seems to work: echo $page->ThisRepeater[0]->h1; Nevermind!
    1 point
  27. For anyone interested this was the only way I could get it working. <? $page->of(false); $desc = $page->images_single->description; $page->of(true); echo $modules->get('TextformatterMarkdownExtra')->format($desc);
    1 point
  28. I've posted here and created an issue on Github but not received a reply to either. If my question is lacking some information, please let me know.
    1 point
  29. 1 point
  30. You just point the two domains to the same root. Then use full http link in your language switch. Simple really (If you use LanguageSupportPageNames)
    1 point
  31. That one is for @horst I guess, thanks for finding !
    1 point
  32. Thanks Martijn - hope you're feeling much better soon. I have another issue for you: Notice: Undefined property: CroppableImageKeepCoords::$cropH in/site/modules/ProcessCroppableImage/classes/CroppableImageKeepCoords.class.php on line 93
    1 point
  33. Ryan, Whatever train you are on -- don't get off. All this new stuff is great! I should just go to bed now (7:00pm here) so I can wake up at 3:00am and check all this stuff out while my kids are still asleep. Of course, that can be risky, one "this rules!" that's a little too loud and I have a one year old up several hours early. That's no picnic.
    1 point
  34. I'm building a series of Process Modules for internal business functions. We have several processes that require complex forms. More than would be feasible to create using pages. So I decided to use FormBuilder to allow the appropriate users create and maintain the forms. There would be way too many fields required to send all these forms to pages using the built-in FormBuilder process. These are all lengthy forms (and this is a University), so think 10+ forms — some with up to 60 fields. Rather than save the form to a page, we hook into 'FormBuilderProcessor::saveForm' and create a page that references FormBuilder entry. (The page title is the same as the form entry, for example 1.817) I got a few tips from Ryan on that part. There is one base module called "ProcessAdminForms" that has all the common functionality. The modules that extend it can get as specific as needed. The screenshots below are from the "ProcessAdminIPIFs" module. It is an internal HR process that is required to hire a new employee or setup a new vendor. List of entries Show/hide columns (state saved per user via cookie) Viewing an entry Administrative comments & notifications
    1 point
  35. I've been working part-time, for several months, on an administration and attendance tracking system for a local trampoline and gymnastics club where I also do a little coaching. Been trying to build this up incrementally in the form of re-usable modules and I have already released some of these (FieldtypeTime, markup crossfade & google calendar embed) but a couple of new fieldtypes and the major module - which handles club sessions, members, scheduling and attendance tracking - are still being tweaked. The system runs on the club intranet with the club administration being done via PW's admin interface and the homepage being displayed on the check-in kiosk at the front desk (a touch-enabled monitor in portrait orientation.) The athletes use the kiosk to check-in as they arrive and club information, signage and advertising can all be shown in the background on the kiosk thanks to the markup-crossfade module. Club staff can quickly and easily create new slides in the kiosk display sequence or modify what's already there (slides for fees-due, car blockages, session times etc) as well as seeing who is in attendance and for what. I don't yet have permission to post full screenshots of the athletes in public places (remember this is all internal to the club) but once I get permission I'll do a write-up of the site. In the meantime here's a few teasers. Firstly, on the check-in kiosk... ...and some from the back-end...
    1 point
  36. In your template list, there's a collapsed filterform on the top, there you can enable the visibility of system templates. Then you can add fields to the user template. If you need to show those fields in the profile site of the admin backend you can enable them in the settings of the ProcessProfile module. To use them on the frontend there's no need to do that. As for the actual saving of the faves, you could use a page field, where you store the faved pages.
    1 point
  37. Hi Apeisa I'm excited about checking this out, I have a large number of sites that are stuck in WordPress due to eCommerce functionality being needed (EDD or WooCommerce handling it in those cases). I can understand the rationale for making 'everything a page' as it's doing things the processwire way, but I've found that it can cause issues by mixing user or auto generated content (orders etc) with content that may need to be more managed or version controlled. Many eCommerce sites are constant 'works in progress' or follow a continuous improvement cycle. Because of this it's necessary to run multiple versions of the site (at the very least 1 staging, 1 production: usually I run 1 local, 1 stage, 1 production). Trying to do so with EDD or Woocommerce is absolute hell because as soon as someone places a new order on the production site the others are out of sync, and I need to write specific migration code or do DB diff etc to be able to deploy changes. This is because in these systems orders are wordpress posts and order statuses are wordpress comments etc so if I've created a new post/page/anything in my local dev environment and someone has placed an order online, then it's almost guaranteed that we'll have a post ID conflict that we need to contend with. The devs of these plugins bascially just ignore it - most users are small and don't do any kind of test etc I'm just bringing it up so that you can see the implication of making EVERYTHING pages, most specifically customer orders. It would be excellent if orders could be separated out to a DB table so that changes can be made to local /staging copies with relative impunity without potentially clashing with user/auto generated content. Having a multi-stage development workflow is easy with any CMS if the data flow is unidirectional (with dev as the definitive source) , but things like eCommerce, Forums etc make the data-flow bidirectional (production and dev environments are authoritative sources for different information) and having them mixed up in the same DB table is just a huge mess. If I'm missing something here and this is already handled or accounted for then my bad, I just wanted to raise my concern so this doesn't suffer from the same pitfall that these popular plugins suffer from. Regardless I'm still very interested to see the progress of this platform. Thanks, Alex
    1 point
  38. 1 point
  39. $answers = $pw->community("answers=awesome"); foreach ($answers as $answer) { echo "Thank you " . $answer->createdUser->name . " "; } :)
    1 point
  40. I love this place. The quality of answers and willingness to help is like no other community I've ever been a part of. I'm consistently amazed. Cheers guys!
    1 point
  41. @SteveB would you mind sharing your code as is (github/zip file/PM)? That would be awesome. I've been digging through the forum to accomplish the same thing and am halfway into some working code. It would be great to have some additional example code. Cheers Gerhard
    1 point
  42. If you have little to no web development skills, WordPress is probably best platform for throwing together pre-made themes and plugins to create something resembling a website or blog that is relatively straightforward to manage. But it won't necessarily be "good." Scalability, extensibility, customisation, performance, suitable page size, code quality, upgradability, integration... many things that are an afterthought, difficult to accomplish, or require even more mediocre plugins to address. I can't think of any projects where I would use WordPress over ProcessWire.
    1 point
  43. You guys know this online GUI configurator for Puppet & Vagrant: https://puphpet.com/
    1 point
  44. What a coincidence that this thread turns up now. I've just finished a system for managing users and was wondering how best to share it. It consists of five template files, one stylesheet and a slightly modified InputfieldPassword module (I changed the validation and some text). You setup a page for each template, all of them children of a hidden /access/ page. The various forms are made with InputfieldForm. Each template sets $page->body and then includes a basic-page.php template file, like we see in many of the processwire profiles. /access/login/ /access/profile/ (for changing your password, username or email address) /access/logout/ /access/register/ (for creating a new user account) /access/reset/ (for when you've forgotten your password) Each user acount must have a unique username. An email address is collected for each user but does not need to be unique (it's okay for someone to have more than one account). When setting an email address we verify it by emailing a message to that address. Confirm by clicking a link or pasting a code into a form (an 'email-confirmed' role is added). Requests to reset a forgotten password are verified by emailing a message to the account's email address. Confirm by clicking a link or pasting a code into a form. To close the registration process set the /access/register/ page status to Hidden. For my own purposes, this is a convenient parts kit I can quickly add to a project. Seems like the easiest way to share it is as a profile. I suppose I could bundle up the files and create a module which installs everything for you but doesn't that seem just a bit overdone? Any suggestions? Good points were made above about coding standards, translatable text strings, etc. I'd have to do some work on that. I value the multi-language capabilities in PW but hardly ever need them in my work so if the community insisted on it being standard would that encourage me to get over my aversion to the syntactic baggage it requires or would it discourage me from sharing? For modules the Proof of Concept category works pretty well. It's nice to share unfinished work. Often the author's intent is easier to grasp in these less filled out implementations. Often there will never be a final version because every project is different. Framework add-ons can actually suffer from too much completeness. Do you want to transplant a seedling or a mature plant? Perhaps coding standards for modules could be expressed as a checklist and implemented as tags in the Modules section of this site. Likewise for profiles and any other kind of package we may come up with. Thanks to the many generous and thoughtful coders here.
    1 point
  45. I'd like to go ahead and finalize ProcessWire 2.3 (aka 2.2.13) and get it out there as our main download next week. I think many of us have been using it for months and any major bugs have been worked out. There is always a list of things to do, but I think it would be especially good for new installations to start from 2.3. It makes sense to retire 2.2 which has several [minor] bugs in it that have since been fixed. If anyone has extra time over the next few days, would you mind attempting a fresh install of our 2.3 release candidate (aka 2.2.13) and letting us know how it goes? It is available for download here: https://github.com/ryancramerdesign/ProcessWire/tree/dev I'm particularly interested to know how the new install process goes for people, as there have been several changes to the installer. We also need people willing to upgrade their 2.2 installs to 2.3 to make sure it goes smoothly. Upgrade your own site, but don't yet upgrade your client's mission critical site until we've received confirmation from others that all went well. Here is the upgrade process: 1. Replace your current /wire/ directory, in it's entirety, with the new one. You probably want to backup the old one and replace it completely. I do this by renaming my old directory to something like /wire.old/, and then putting in the new one. If you do that, just remember to delete the /wire.old/ once you don't need it anymore, as it would be a security problem to leave it there. Do not FTP, SCP or RSYNC directly into your existing /wire/ directory because that will result in a monster of old and new files (since some file locations have changed). 2. Replace your existing /index.php with the new one. 3. Replace your existing /.htaccess file with the new one. The new one comes named htaccess.txt, so you'll have to rename it to .htaccess. If you had any custom rules setup in your old htaccess file, remember to copy them to your new one. 4. Load a page from your website in your browser. You will most likely get a Unable to complete this request error. Hit reload and it should be gone. If not, then remove these files and try again: rm /site/assets/cache/Modules.* If it still doesn't work, then look at the last entry in /site/assets/logs/errors.txt and post what it says. 5. Browse your site and make sure everything is working how you expect. Login to the admin and do the same. Please report your experience here. 6. Have a beer. Thanks, Ryan
    1 point
  46. PW's coding style is visible in any core file. But it's the same idea whether we're talking about code, graphic design, architecture or really anything someone would create: When it comes to code, that translates mostly to not adding extra unnecessary bytes: Avoid having an opening bracket "{" on its own line. Instead, just use a single space before an opening bracket. Only closing brackets "}" should be on their own line. Avoid use spaces for indentation, just tabs. This is what tabs were made for, not spaces. Use just one tab per indentation, of course. Avoid extra spaces around parenthesis unless you think it's really necessary. For example, it's preferable to use function(a, b) not function ( a, b ) Put a space after a comma, just so the comma doesn't visually melt into one of the adjacent letters. Don't put a closing PHP tag "?>" at the end of a file. Use camelCase for most variable and function names except for when the variable resolves to a database column or ProcessWire 'name', then use lowercase and underscores. Use camelCase for class names except always have the first character be uppercase, i.e 'CamelCase' (there may be a more specific term for this). Put a space before and after the concatenation operator, as it's small and disappears (or becomes a sentence period) too easily. For example use "a . b" and not "a.b". And of course, comment as much as possible. Comments are bytes that are always appreciated for communication. Outside of internal comments within the body of functions/methods, PHPdoc style is the standard we prefer. Honestly the biggest one for me is just the opening bracket thing. I can't follow code that contains opening brackets on their own line. It makes the opens and closes so visually similar that I can't can't easily tell them apart. It could be that my eyes aren't great, but at least for me that coding style creates legibility problems. I have to "fix" code before I can read it. With the style I'm using, when I see a bracket on a line (before I see the nuances of the serifs), at least I know it is always closing something.
    1 point
  47. I wouldn't do it that way though if it's going to be the case that you have pages in multiple locations a lot of the time. Take for example your first structure - most ecommerce packages would handle this y creating the category structure, then adding products and ticking a box in a category lost to assign that product to multiple categories. When browsing the structure you would have a URL of vacuums/wet-vac-cleaning-solutions and under that it would list your product, but when you click on the product it would appear at a URL of something like products/super-clean-2000 I would suggest handling it this way as well, as I'd you use redirects you're essentially taking the user from one category to a completely different category which would make them a bit confused I think. As such, I would make the structure of your categories under a page called "categories" and create a template for those pages called "category". Then create a page called "products" and a template called "products" for it to use. The product template would need a field called "categories" that uses the Page fieldtype which is set up to allow selection of all pages under the category page. You then simply add products and select the categories they appear in When editing the front-end categories template to show the relevant products in that category you can simply use a selector to find all products that are in that category. Sorry, that's a whistlestop tour of how I'd recommend doing it and doesn't sound simple, but it is pretty easy in reality and not as daunting as I've probably just made it sound
    1 point
×
×
  • Create New...