Leaderboard
Popular Content
Showing content with the highest reputation on 02/08/2015 in all areas
-
Discussion can be continued even if the issue is closed, by the way. That being said, I always felt that GitHub issues are not a good place for discussions or feature requests anyway, but I guess that depends on how one wants to use GitHub issues. I really don't follow the PW repository closely enough to even comment on that, it's just my experience from other projects that discussions and feature requests tend to extend issues to a length close to being unreadable. The same is true for the number of open issues or pull requests – it really depends on how someone looking at the repo views them. I know I tend to shy away from projects that have a lot of open issues and PRs, but one should in fact always look at the commit log as well to check how active a repo is. Maybe a hint concerning all this in the README (“How Processwire handles issues and pull requests” or something) would help clear that up?3 points
-
You can make your custom sharing widgets using sharrre and PW.. doesn't take long! 1.) Download http://sharrre.com/ 2.) put sharrre.php in templates 3.) put jquery.sharrre.min.js in your scripts folder. 4.) add the new template to PW 5.) add new hidden page using that template; call it anything (example 'sharrre') 6.) include the script in your output; 7.) in your custom js file setup your js; make sure to put in the correct urlCurl to your page using the sharrre.php for example: /*-----------------------------------------------------------------------------------*/ /* SHARRRE /*-----------------------------------------------------------------------------------*/ $('#shareme').sharrre({ share: { twitter: true, facebook: true, googlePlus: true }, urlCurl: '/sharrre/', template: '<div class="box"><div class="left">Share</div><div class="middle"><a href="#" class="facebook">f</a><a href="#" class="twitter">t</a><a href="#" class="googleplus">+1</a></div><div class="right">{total}</div></div>', enableHover: false, enableTracking: true, render: function(api, options){ $(api.element).on('click', '.twitter', function() { api.openPopup('twitter'); }); $(api.element).on('click', '.facebook', function() { api.openPopup('facebook'); }); $(api.element).on('click', '.googleplus', function() { api.openPopup('googlePlus'); }); } }); Note: there are other themes - see the website... grab the CSS that goes with this JS setup: http://sharrre.com/example2.html 8.) somewhere on your page, put the relevant markup: <div id="sharrre"> <div id="shareme" data-url="<?php echo $page->httpUrl?>" data-text="Share this page"></div> </div> works for me on 3 sites so far.. - - - N.B. There is now a comprehensive module for social sharing buttons by Soma which is probably easier to setup and more flexible, though using Sharrre can still have some applications. Also, it is possible that Sharrre is no longer maintained and may not still work without some intervention... not sure as I have not researched this issue..2 points
-
You do get the page object right away from the field. So this is enough. echo $page->author->title;2 points
-
The URL to the template directory is stored in $config: <img src="{$config->urls->templates}bbp/img/logo.jpg" alt="Home" width="282" height="78" /> Equally, using $config->urls->root as the base for any local resources residing outside the templates directory makes them path-agnostic as well.2 points
-
2 points
-
Is my 100th post I wanted to do something special. I edited a video, hope you like it Just for fun Edited: Now with subtitles1 point
-
I don't normally like wysiwyg web editors or any other similar tools out there but I stumbled upon Pinegrow and I have to say wow. It is useful in so many ways. Description from Pinegrows: 'a desktop app that lets you build responsive websites faster with live multi-page editing, CSS styling and smart components for Bootstrap, Foundation, AngularJS and other frameworks.' Check out the video below for a quick introductory look at it: Just wanted to share this with anyone that thinks this can help their workflow.1 point
-
I'm happy to announce that the official ProcessWire Developer Directory has been launched at http://directory.processwire.com It comprises a developer list and a map and is designed to allow anyone developing with ProcessWire to find each other. It also allows potential clients to find developers as well as illustrating how widely ProcessWire is used worldwide. The developer list displays in random order so as not to favour any one developer and is currently quite short, but it should grow nicely as you create your own profiles. The login process is linked to your ProcessWire forum account so the same details you use to login here will allow you to get started. There is a manual approval process as well as some rules so that we can ensure that the directory contains quality content and is free of spam. As a minimum, developers must have 10 posts here on the forums before they can login and post a profile, however after that there are relatively few restrictions - as long as you follow the guidelines on the Profile form and abide by the Terms and Conditions (a condition of submitting a profile) you will be fine. You may notice small icons/badges next to some developers - these are designed to recognise special contributions to the ProcessWire project and are awarded by staff as part of the approval process. Whilst checking each entry's content we cross-check against forum profiles, the modules directory and other sources to determine which badges apply to a developer. There are plans for more features over time which you can be notified about by checking the box at the end of the profile form. I look forward to seeing your profiles soon!1 point
-
DownloadGuard for ProcessWire About DownloadGuard This simple module was developed to give clients or users a unique download link to access file downloads you offer them. Installation & Usage 1. Place the module files in /site/modules/DownloadGuard/ 2. In your admin, click Modules > Check for new modules 3. Click "install" for __DownloadGuard__ 4. In the module Settings you can edit the default count for max downloads and the time, the download should be active. 5. During the installation a Page „Downloads“ is created in your PageTree. You can create children under this Page to make Downloads. In the children page you get your unique hash and the ability to upload your file. Todo - Let the system create the download links, for easy copy and paste. BitBucket Repository: https://bitbucket.org/m_knorr/downloadguard/overview Direct Download: https://bitbucket.org/m_knorr/downloadguard/get/master.zip1 point
-
I just wanted to start a discussion about issues and pull request in the github repo of ProcessWire. I know that Ryan is the one really responsible about this, but I wanted to know if others think like me, before approaching him. So to the topic. The repo has currently ~250 open issues and ~35 pull requests. For someone checking out on ProcessWire this could lead to the assumption, that there's lots of stuff broken and there are even people trying to fix stuff, but the pull requests are just abandoned. Now I know that Ryan is really trying to keep stuff structured with extensive tagging, but I think it would be great to have some kind of settled timeline in which issues/pr's will be closed. E.g. fixed issues after one or two weeks, discussions after four weeks after the last activity. I would think, it could improve the image of this stable cms, while keeping the issues directory clean and current. With Ryans tags even closed issues are still quite nicely to sort out and these can be reopened at anytime anyways.1 point
-
FieldtypePageWithDate & InputfieldPageWithDate Module for ProcessWire - Page Reference with Date Field - Field that stores one or more references to ProcessWire pages Modified version of the FieldtypePage module in ProcessWire with extra datetime field containing the date a page was added to the inputfield. Github URL Link: FieldtypePageWithDate To install Copy to /site/modules/ and go to Admin > Modules > Check for new modules. Requirement Requires: InputfieldPageWithDate (will be installed automaticly) Tested on ProcessWire 2.5.6 dev Setup in back-end install both modules:FieldtypePageWithDate InputfieldPageWithDate create a new field in ProcessWire and give it a nameeg. myfriends as type choose PageWithDate choose the right dereference for your needs (all 3 modes work fine with this field)Multiple pages (PageArray) (in this example we are using this) Single page (Page) or boolean false when none selected Single page (Page) or empty page (NullPage) when none selected assign a selector to the field, in this example we will use users Template of selectable page(s) (select the user template) choose a label field, since we are using users set it to name Label Field name set an input field type, depending if you are using dereference of multiple or a single pagefor this example we are using AsmSelect save the field and assign it to a template of choice Add some users/friends to the field by editing a page with this template Usage in front-end In you template you can acces the field as you usualy do with any FieldtypePage. In addition to this the new parameter "assigned" is available Multiple pages if (count($page->myfriends)) { foreach($page->myfriends as $friend) { echo "id: ".$friend->id."<br>"; echo "name: ".$friend->name."<br>"; echo "assigned on: ".$friend->assigned."<br><br>"; } } This will output something like: id: 1031 name: johndoe assigned on: 2014-10-31 14:22:02 id: 1032 name: janedoe assigned on: 2013-04-15 23:16:38 Note: To use your own data/time formatting set $friend->of(false); to get a unix timestamp from the database Single page echo "id: ".$page->myfriends->id."<br>"; echo "name: ".$page->myfriends->name."<br>"; echo "assigned on: ".$page->myfriends->assigned."<br>";This will output something like: id: 1031 name: johndoe assigned on: 2014-10-31 14:22:02 Note: To use your own data/time formatting set $page->myfriends->of(false); to get a unix timestamp from the database Edited: removed extra date() formatting since value is formatted by default. Set assigned datetime manuallyYou can set datetime manually by assigning it to the page you add $friend = $users->get('johndoe'); $friend->assigned = "2012-01-01 12:12:12"; $page->myfriends->add($friend); $page->of(false); $page->save(); Edited: Added information on manually setting the assigned to a datetime value. (if you previously installed this module you need to update atleast the FieldtypePageWithDate.module file)1 point
-
After reading Include & Bootstrap on the ProcessWire website I coded a simple shell script for outputting page informations. Here is the GitHub repository with further informations and usage instructions. Long story short, you can do things like pw get "/" which outputs this: or pw find "template=basic-page,parent=/about/,sort=-id,limit=4" id template rootParent which outputs this: I don’t know if it is in any way useful, but I think it’s a fun way to output PW content and to quickly get to page informations in a rather nerdy fashion.1 point
-
yeah, it works really well... probably should make this into a module at some point, for wider accessibility1 point
-
Oh, I didn't know that not everybody can reopen issues. I can understand that. But on the other hand there are lot's of fixed issues, which are still open. There are issues which are open for month now. There are mayor version jumps in between and, at least for me, it seems nobody is there to check if they're still relevant or fixed in any later version. Also I noticed, while writing the intro post, that there was still a pullrequest of mine open, where it was kinda clearly stated, that it'll never be merged because of clear reasons. Another example are multiple pull requests about hashed tabs, which are already part of processwire by some time. It's not about closing down feature requests or discussions but to mostly close things which are just done in some way.1 point
-
@Richard, something like this: foreach ($page->table as $row_page) { echo $row_page->render(); }1 point
-
I quite like the way this site does it. I'm sure there's a PHP version of it laying somewhere... Update: I see they have a PHP one - perhaps you could adapt this to your own needs?1 point
-
OMG i can see it now.. pop up and say... " I see your trying to pee.." "do you need help?" "wow your taking a long time maby you should see a doctor"..... lol1 point
-
Processwire is a significant upgrade from WP. ProcessWire has a full and ever expanding landscape of tools that make things just work. Whomever is "forcing" them to migrate to ProcessWire is a very smart and knowledgeable manager or owner. The technical aspects of why ProcessWire is significantly better shouldn't need much work or research on anyone's behalf. We as Developers need to really believe in the web tools that we are using, otherwise what is the point? In my humble opinion, making a business or technical case for using ProcessWire is just too easy. Anyway, WP is great for Blogs --- until you have to maintain the website.1 point
-
It does (with a little tweaking). I've basically set it up so I have a php class with all the neccessary functionality and created both a graphical interface in a backend page to do individual tests (simple source+target selection and optionally go one level deeper) and a cli wrapper for bulk migration and creating dumps for recalcitrant pages. The biggest problem will be tweaking the HTML contents and contained links so they don't get shredded in CKEditor. Some were created with older versions of TinyMCE (with some home-brewed tweaks that I'd now avoid like the plague), some bulk imported from centuries old pages created in Netscape Navigator and Frontpage as far back as the middle of the nineties, so it's quite a mess.1 point
-
Quick search, lister pro maybe? Page path history (moving and renaming pages without worrying broken links or redirects at all), image abilities with croppable images... But most importantly good use of page relations. Build the site in a way that they never have to update same information in more than one place.1 point
-
This is a hard one because for me one of the greatest things about PW is its simplicity. But for WP power users this doesn't count because they know WP well enough and feel that something was stripped away from them and they don't have the power they used to have (even though they never used the features they are missing as an editor in PW). I would show them the multi language features which are absolutely over the top. It is so easy to edit PW multilanguage sites...1 point
-
I think the issue Soma is referring to was that in fact only the person originally reporting the issue (or Ryan) can reopen a closed issue at GitHub. Last time this resulted in a bit of a mess when existing issues (and feature requests) where the reporting person had disappeared were closed and reopening them seemed rather difficult. That's why I really don't believe in this strategy either. If there's a bug report, discussion, or feature request, it's probably there for a reason, and closing those en masse feels plain wrong On the other hand, I do believe that issues that are solved can be swiftly closed without waiting for an answer. I also generally speaking agree with what's being said here, i.e. that these figures matter. Helping Ryan by tracking down any bugs and commenting on feature requests etc. sounds like a potential first step towards this goal to me.1 point
-
here's a first try though untested as of yet... worked on this a bit... /** * render markup menu for bootstrap nested navigation * * @param PageArray $pa pages of the top level items * @param Page $root root page optional, if you use other root than home page (id:1) * @param string $output for returned string collection * @param integer $level internally used to count levels * @return string menu html string */ function renderChildrenOf($pa, $root = null, $output = '', $level = 0) { if(!$root) $root = wire("pages")->get(1); $output = ''; $level++; foreach($pa as $child) { $has_children = count($child->children()) ? true : false; $opening = ''; $closing = ''; if($has_children && $child === $root) { $output .= "\n\t<li><a href='{$child->url}'>{$child->title}</a></li>\n"; } if(!$has_children) { $output .= "\t<li><a href='{$child->url}'>{$child->title}</a></li>\n"; } if($has_children && $child !== $root) { if($level == 1) { $opening = "\t<li aria-haspopup='true'>\n<a href='{$child->url}'>{$child->title}</a>\n<div class='grid-container12'>\n"; $closing = "</div>\n</li>\n"; } if($level == 2) { $opening = "\n<div class=\"grid-column3\">\n<h4>{$child->title}</h4>\n<ul>\n"; $closing = "</ul>\n</div>\n"; } } $output .= $opening; // If this child is itself a parent and not the root page, then render its children in their own menu too... if($has_children && $child !== $root) { $output .= renderChildrenOf($child->children(), $root, $output, $level); } $output .= $closing; } return $output . "\n"; } it's also easier in this case to specify the outer markup and let the function do the rest.. $root = $pages->get(1); $pa = $root->children(); $pa->prepend($root); echo '<ul class="mega-menu">'; echo renderChildrenOf($pa,$root); echo '</ul>'; but probably you'll need to work on it because this really only works with that exact page tree structure..1 point
-
New dev branch updates for this week: Field editor now lets you target templates Optimization to field cloning Live-updated session viewing tool Session cleanup on certain Debian-based servers Configurable session fingerprints Session history from the API1 point
-
I've encountered an interesting problem when using AIOM recently - but also have a potential fix, so it's not all bad. Here's the information! I am using separate IE and non-IE stylesheets, with each loaded via conditional comments in the markup. There are two arrays for the files: $config->css->all = array( 'css/pure-min.css', 'css/grids-responsive-min.css', 'css/fa/css/font-awesome.min.css', 'css/cds-all.css', ); $config->css->oldie = array( 'css/pure-min.css', 'css/grids-responsive-old-ie-min.css', 'css/fa/css/font-awesome.min.css', 'css/cds-oldie.css', ); These get minified in the template: <!--[if lte IE 8]> <link rel="stylesheet" type="text/css" href="<?php echo AIOM::CSS($config->css->oldie); ?>"> <![endif]--> <!--[if (gte IE 9)|!(IE)]><!--> <link rel="stylesheet" type="text/css" href="<?php echo AIOM::CSS($config->css->all); ?>"> <!--<![endif]-->That is all great. The problem arises when the source files all have the same modification time - which it does on the live environment of this website, and when using an automated deployment service.Because each list of files has the same number of files, and the files have the same modification time, the generated cache name is always the same, and one overwrites the other. My fix was to include the file's paths when generating the cache name in _getCacheName: foreach ($files as $file) { $_timestamp .= $file['absolute_path'] . $file['last_modified']; } I'm more than happy to create a pull request on GitHub for this, but thought it'd be worth mentioning/discussing first1 point
-
1 point
-
@gebeer Thank you for the feedback - glad this is working for you. For this Inputfield I deliberately wanted to have a way of quickly entering things from the keyboard but I do appreciate that some folks might want a way of adding a JS picker to this. When I'm less busy with my current project I'll look at re-visiting this to add one. If anyone else has additional suggestions for a candidate time-picker, please drop a note below.1 point
-
1 point
-
Just wanted to throw in my two cents. If you come at it as a front-end developer that's a complete beginner to CMSs, then PW should be very easy to get going. It's built around working the same way that existing web technologies work… Pages map in the same way that URLs do… Template files are just plain HTML/PHP files… the API is largely the same as a front-end API (jQuery)… and so on. So if you know your basic web technologies outside of CMSs, then you won't find a simpler system than ProcessWire. The problem is most other CMSs don't work that way. So the line gets more blurry when you've become used to the terminology and approach of another CMS, because PW can be quite different. Sometimes you have to unlearn what you know from elsewhere in order to appreciate the simplicity of PW. People are always trying to find complexity that isn't there, especially those that grew up on other platforms. PW is a system that rewards you by being curious. We aim to show you how to fish so that you can catch the big fish. We're not here to catch the fish for you. You don't have to know anything about fishing, but you should know how to yell for help if you fall in the water. And you should be willing to learn by example. I learn best by example, so this is the way I tend to teach too (and I recognize not everyone learns the same way). PW is a CMS and CMF, not a website builder. If you are curious and willing to explore, you'll find it is very simple indeed. Certainly far simpler than even WordPress in creating a custom website. You do have to come from the point of view of "I want to create and have the system adapt to me" rather than "I will create something based on what the system provides." If you already know what you want to create and it's something unique, you won't find a simpler path to get there than PW. WordPress is a different beast, in that it's basically saying "YOU WILL CREATE A BLOG or modify this blog and call it something else." Some people like that underlying structure… "okay, we're starting with a blog, what can we do with it?" Others do not like that underlying structure. Our audience consists of those that want to have a system support their original creation rather than mash up an existing creation. There was a PDF posted earlier that I think hit upon some good points, and I appreciate the effort that went into putting it together. The fictional character being scripted in the dialog is not our target. I can go into specifics if anyone wants me to, but I was definitely left feeling at the end of it that we have to be careful about hand-feeding too much or else we'll start attracting people beyond our support resources. Folks that want the fish cooked and filleted rather than folks learning to fish. Perhaps in time we will want to attract more of the consumer-type audience, but currently I don't know how to support users looking to find all the answers in a sitemap file. Keep in mind that unbridled growth is not necessarily desirable. Most of us don't get paid for most of the work we do here and we do best if we grow in a more healthy manner, attracting more thoughtful designer/developers that are here to learn and also contribute. Obviously the author of the PDF is one of the thoughtful ones (and the PDF is a great contribution), even if his fictional character isn't necessarily, but we'll welcome him anyway. But we will definitely be going through the PDF in more detail to learn and improve from it where appropriate, while keeping our audience in mind. I think we're doing something right, because our audience is growing rapidly. I'm nearly full time on ProcessWire now, and it's still difficult to keep up with everyone. At present, I like that our audience is largely open-minded, curious and thoughtful designers and developers. Somehow we've attracted an incredible quality of people and that's what makes this place great. We could not ask for a better group of people here. I'm reluctant to lead PW towards a website builder direction because I think that's when the quality of the community could go down, as people come looking to eat fish rather than learn, catch some fish, and throw some back. The reality is that part of our long term goals include converting the rather large audience that has outgrown WordPress into ProcessWire users. I'm convinced that we do that by giving them more ProcessWire, and not more WordPress. But at the same time, we always have to keep an eye on WordPress and learn. They've been lucky no doubt, but they are also doing many things right. So we have been and always will be working to make the WP-side of users more comfortable in ProcessWire, while also trying to help them grow by distancing them from the limited WP mindset.1 point