Jump to content

Leaderboard

Popular Content

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

  1. @gebeer I'm starting to play with adding clockpicker (which I find really intuitive) to the inputfield. Here's a screenshot... ...what do you think? Of course, this is only valid for HH24MM format times.
    8 points
  2. It might be considered a small thing, but I'd prefer to see the "Columns of Checkboxes" setting result in: 1 6 2 7 3 8 4 9 5 10 rather than what is currently does, which is: 1 2 3 4 5 6 7 8 9 10 Does anyone else have any thoughts on this? Maybe it should be an option for one way or the other?
    3 points
  3. Hey Christophe, I built this (cultural) event site with PW, and it might be of interest to you: http://www.spainculture.us/ Think carefully about the initial structure that makes most sense for your project. In my case, since we're talking about events organized in different cities around the U.S., I chose to build the tree this way: This "geographical structure" is very intuitive for editors as they're able to quickly add or edit events by looking for the city where the event takes place. Much faster than having all events under one place, e.g. a page named "Events". When editing or creating an event, editors can choose categories (architecture, culinary arts, etc) from a simple pull-down menu: This menu is a page field, like Diogo recommended above, which references the categories that are organized as such in the tree: I hope this helps you understand the power and simplicity of page system in Processwire.
    3 points
  4. It can be used, just what do you do if you have files in there that come from core modules you don't want? When using form API on front-end and load a Datetime field, css and js from that Inputfield will get added to the array, but I don't like to use backend scripts in the front-end. You add another dependency, that if core changes or has a bug you also have that on front-end after update. You have already have to take care of changed to Inputfields anyway so maybe it's no big deal. Also has cases where third party autoload modules added scripts or css to the array and it may cause troubles. All that led me to create my own file array for front-end. $config->siteScripts = new FilenameArray(); $config->siteStyles = new FilenameArray(); Now that isn't something other front-end module know of so maybe it again isn't good regarding that, where the core $config->scripts could give a standard, so third party front-end modules could rely on. I just don't think mixing them isn't very nice.
    3 points
  5. For some reason I didn't get notified about your post, but you're right with the headers. Depending on the rest of your config, you actually might need to add this line. Exactly this cost me 30 minutes today, I just couldn't get it to work on a new installation. Thanks for pointing this out. As with the cookie, the "=" version should, according to the documentation, work - but yours will definitely work better. I personally removed this part, because for my use case it's enough to know whether I'm using the admin area or not. Anyway, I will also update this part. Thanks for you input. The clear cache module is also taking shape (way too slow for my taste, but I only have so much time…), and should be ready for a first test drive soon.
    2 points
  6. I found the problem! The first module i installed was Module Manager, and this give the Internal Server Error . I remove via FTP the ModuleManager directory and now the PW-site works well. I install another module 'Events', successfully! Now I will find a solution why the Module Manager gives an error. How can this module installed without problems?
    2 points
  7. https://processwire.com/talk/topic/3987-cmscritic-development-case-study/?p=36867 See this topic, Ryan mentions how to achieve that about 1/2 way down the first post.
    2 points
  8. Hi there, very nice project Before doing anything, read this tutorial about categorising content in PW by Kongondo https://processwire.com/talk/topic/3579-tutorial-approaches-to-categorising-site-content/ You will understand how much flexibility you gain by storing all data as pages and referencing them with page fields, instead of using simple text fields.
    2 points
  9. There's already a github issue about this, but no feedback from Ryan by now. https://github.com/ryancramerdesign/ProcessWire/issues/889
    2 points
  10. Since you guys asked for it, I'll take a stab at a case study on the development process. Most of the development was done in about a week and a half. I started with the basic profile, but it ended up being something somewhat similar to the Blog profile in terms of how it's structured. Below I'll cover some details on the biggest parts of the project, which included data conversion, the template structure, the front-end development and anything else I can think of. Data Conversion from WordPress to ProcessWire One of the larger parts of the project was converting all of the data over from WordPress to ProcessWire. I wrote a conversion script so that we could re-import as many times as needed since new stories get added to cmscritic.com almost daily. In order to get the data out of WordPress, I queried the WordPress database directly (my local copy of it anyway) to extract what we needed from the tables wp_posts for the blog posts and pages, and then wp_terms, wp_term_relationships, and wp_term_taxonomy for the topics and tags. WordPress stores its TinyMCE text in a state that is something in between text and HTML, with the most obvious thing being that there are no <p> tags present in the wp_posts database. Rather than trying to figure out the full methodology behind that, I just included WP's wp-formatting.php file and ran the wpautop() function on the body text before inserting into ProcessWire. I know a lot of people have bad things to say about WordPress's architecture, but I must admit that the fact that I can just include a single file from WordPress's core without worrying about any other dependencies was a nice situation, at least in this case. In order to keep track of the WordPress pages imported into ProcessWire through repeat imports, I kept a "wpid" field in ProcessWire. That just held the WordPress post ID from the wp_posts table. That way, when importing, I could very easily tell if we needed to create a new page or modify an existing one. Another factor that had to be considered during import was that the site used a lot of "Hana code", which looked like [hana-code-insert name="something" /]. I solved this by making our own version of the Hanna code module, which was posted earlier this week. Here's an abbreviated look at how to import posts from WordPress to ProcessWire: $wpdb = new PDO("mysql:dbname=wp_cmscritic;host=localhost", "root", "root", array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'")); $posts = wire('pages')->get('/posts/'); $sql = " SELECT * FROM wp_posts WHERE post_type='post' AND post_status='publish' ORDER BY post_date "; $query = $wpdb->prepare($sql); $query->execute(); while($row = $query->fetch(PDO::FETCH_ASSOC)) { $post = $posts->child("wpid=$row[ID]"); // do we already have this post? if(!$post->id) { // create a new post $post = new Page(); $post->template = 'post'; $post->parent = $posts; echo "Creating new post...\n"; } $post->of(false); $post->name = wire('sanitizer')->pageName($row['post_name']); $post->title = $row['post_title']; $post->date = $row['post_date']; $post->summary = $row['post_excerpt']; $post->wpid = $row['ID']; // assign the bodycopy after adding <p> tags // the wpautop() function is from WordPress /wp-includes/wp-formatting.php $post->body = wpautop($row['post_content']); $post->save(); echo "Saved post: $post->path\n"; } What I've left out here is the importing of images, topics, tags, and setting the correct authors for each post. If anyone is interested, I'll be happy to go more in depth on that, but didn't want to overwhelm this message with code. Template File Structure This site makes use of the $config->prependTemplateFile to automatically include the file _init.php before rendering a template file, and $config->appendTemplateFile to automatically include the file _main.php after. So the /site/config.php has this: $config->prependTemplateFile = '_init.php'; $config->appendTemplateFile = '_main.php'; You may recognize this as being the same setup from the Skyscrapers profile. The _init.php includes files containing functions we want to be available to all of our templates, and set default values for the regions we populate: /site/templates/_init.php /** * Include function and hook definition files * */ require_once("./includes/render.php"); require_once("./includes/hooks.php"); /** * Initialize variables populated by templates that get output in _main.php * */ $browserTitle = $page->get('browser_title|title'); $body = "<h1>" . $page->get('headline|title') . "</h1>" . $page->body; $side = ''; $renderMain = true; // whether to include the _main.php file The includes/render.php file that is included above includes several functions for generating markup of navigation and post summaries, or any other shared markup generation functions. Examples are renderPost(), renderNav(), renderTags(). This is similar to the blog.inc file from the Blog profile except that I'm letting these functions generate and return their own markup rather than splitting them into separate view files. I personally find this easier to maintain even if it's not as MVC. The includes/hooks.php sets up any hooks I want to be present for all of my templates. I could have also done this with an autoload module, but found this to just be a little simpler since my hooks were only needed on the front-end. The main hook of interest is one that makes all posts look like they live off the root "/" level rather than "/posts/" (where they actually live). This was in order to keep consistency with the URLs as they were in WordPress, so that the new site would have all the same URL as the old site, without the need for 301 redirects. /site/templates/includes/hooks.php /** * This hook modifies the default behavior of the Page::path function (and thereby Page::url) * * The primary purpose is to redefine blog posts to be accessed at a URL off the root level * rather than under /posts/ (where they actually live). * */ wire()->addHookBefore('Page::path', function($event) { $page = $event->object; if($page->template == 'post') { // ensure that pages with template 'post' live off the root rather than '/posts/' $event->replace = true; $event->return = "/$page->name/"; } }); Our /site/templates/_main.php contains the entire markup for the overall template used site wide, from <html> to </html>. It outputs those variables we defined in _init.php in the right places. For example, $body gets output in the <div id='bodycopy'>, $side gets output in the right <aside>, and $browserTitle gets output in the <title> tag. /site/templates/_main.php <?php if($renderMain): ?> <html> <head> <title><?=$browserTitle?></title> </head> <body> <div id='masthead'> // ... </div> <div id='content'> <div id='bodycopy'><?=$body?></div> <aside id='sidebar'><?=$side?></aside> </div> <footer> // ... </footer> </body> </html> <?php endif; ?> We use the rest of the site's template files to simply populate those $body, $side and $browserTitle variables with the contents of the page. As an example, this is an abbreviated version of the /site/templates/post.php template: /site/templates/post.php // functions from /site/templates/includes/render.php $meta = renderMeta($page); $tags = renderTags($page); $authorBox = renderAuthor($page->createdUser); $comments = renderComments($page); $body = " <article class='post post-full'> <header> <h1>$page->title</h1> $meta </header> $page->body $tags $authorBox $comments </article> "; if(count($page->related)) { $side = "<h4>Related Stories</h4>" . renderNav($page->related); } What might also be of interest is the homepage template, as it handles the other part of routing of post URLs since they are living off the root rather than in /posts/. That means the homepage is what is triggering the render of each post: /site/templates/home.php if(strlen($input->urlSegment2)) { // we only accept 1 URL segment here, so 404 if there are any more throw new Wire404Exception(); } else if(strlen($input->urlSegment1)) { // render the blog post named in urlSegment1 $name = $sanitizer->pageName($input->urlSegment1); $post = $pages->get("/posts/")->child("name=$name"); if($post->id) echo $post->render(); else throw new Wire404Exception(); // tell _main.php not to include itself after this $renderMain = false; } else { // regular homepage output $limit = 7; // number of posts to render per page $posts = $pages->find("parent=/posts/, limit=$limit, sort=-date"); $body = renderPosts($posts); } The rest of the site's template files were handled in the same way. Though most were a little simpler than this. Several were simply blank, since the default values populated in _init.php were all that some needed. Front-end development using Foundation 4 The front-end was developed with the Foundation 4 CSS framework. I started with the Foundation blog template and then tweaked the markup and css till I had something that I thought was workable. Then Mike and I sent the _main.php template file back and forth a few times, tweaking and changing it further. There was no formal design process here. It was kind of a photoshop tennis (but in markup and CSS) where we collaborated on it equally, but all under Mike's direction. After a day or two of collaboration, I think we both felt like we had something that was very good for the reader, even if it didn't originate from a design in Photoshop or some other tool like that. I think it helps a lot that Foundation provides a great starting point and lends itself well to fine tuning it the way you want it. I also felt that the mobile-first methodology worked particularly well here. Comments System using Disqus We converted the comments system over to Disqus while the site was still running WordPress. This was done for a few reasons: Disqus comments provide one of the best experiences for the user, in my opinion. They also are platform agnostic, in that we could convert the whole site from WP to PW and not have to change a thing about the comments… no data conversion or importing necessary. Lastly, ProcessWire's built-in comments system is not quite as powerful as WordPress's yet, so I wanted cmscritic.com to get an upgrade in that area rather than anything else, and Disqus is definitely an upgrade from WP's comments. In order to ensure that Disqus could recognize the relations of comment threads to posts, we again made use of that $page->wpid variable that keeps the original WordPress ID, and also relates to the ID used by the Disqus comments. This is only for posts that originated in WordPress, as new posts use a ProcessWire-specific ID.
    1 point
  11. 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.
    1 point
  12. Hello, I'm not sure it's the right place to post this topic. I've just converted a Joomla! 1.5 website to Processwire 2.5.3. I didn't want to do some training for Joomla! for someone for whom I had made it years ago and who hasn't really edited/managed it since then. As I'm going to start some training tomorrow, I wanted to use Processwire. I have used a basic form based on some code found in an old topic of this forum on 1-2 websites already. They use the "Direct Output with Includes" approach. But for this one that I've put online today, I'm using the default intermediate profile as a base. (For another website in development, the multilingual profile is used.) So I've tried to insert the form in several ways in a Contact page, but due to the "Delayed output" approach it's more difficult than with the other approach. So I've finally installed the Hanna Code module that I'm using for the first time. I had to uninstall it once as I had a "Hello World" text appearing on the bottom of each page. I wasn't sure why, but apparently installing the Hanna Code module also installed the Hello World module and made this text appear. So, to come back to the reason I'm posting this, I have a hanna code named "contact_form" (that is inserted in the sidebar textarea editor of a Contact page - not sure for the moment if I'm going to use the basic-page template or the contact (contact.php) one): <?php /** * Example of a simple contact form in ProcessWire * */ // set this to the email address you want to send to (or pull from a PW field) $emailTo = 'whatever@gmail.com'; // or if not set, we'll just email the default superuser if(empty($emailTo)) $emailTo = $users->get($config->superUserPageID)->email; // set and sanitize our form field values $form = array( 'Nom complet ' => $sanitizer->text($input->post->fullname), 'E-mail ' => $sanitizer->email($input->post->email), 'Message ' => $sanitizer->textarea($input->post->comments), ); // initialize runtime vars $sent = false; $error = ''; // check if the form was submitted if($input->post->submit) { // determine if any fields were ommitted or didn't validate foreach($form as $key => $value) { if(empty($value)) $error = "<h3 class='error'>Veuillez vérifier que vous avez complété tous les champs.</h3>"; } // if no errors, email the form results if(!$error) { $subject = "Formulaire de contact"; $message = ''; foreach($form as $key => $value) $message .= "$key: $value\n"; mail($emailTo, $subject, $message, "From: $form[email]"); $sent = true; } } if($sent) { echo "<h3>Merci, votre message a été envoyé.</h3>"; // or pull from a PW field } else { // encode values for placement in markup foreach($form as $key => $value) { $form[$key] = htmlentities($value, ENT_QUOTES, "UTF-8"); } // output the form echo <<< _OUT $error <form action="./" method="post"> <p> <label for="fullname">Vos Prénom et Nom</label><br /> <input type="text" id="fullname" name="fullname" size="46" value="$form[fullname]" /> </p> <p> <label for="email">Votre e-mail</label><br /> <input type="email" name="email" id="email" size="46" value="$form[email]" /> </p> <p> <label for="comments">Message</label><br /> <textarea id="comments" name="comments" rows="5" cols="60">$form[comments]</textarea> </p> <p><input type="submit" name="submit" value="Envoyer" /></p> </form> _OUT; } (I also tried with a small php code with "include" in it and the previous code in a php file. I don't remember if it worked at least the same. Perhaps it was better for security reasons (?).) So, I have several questions/issues . # Is this form still "secure" with Processwire 2.5.3? And enough "secure" inserted from a Hanna code? # In the "Code" tab of the hanna code, I'm having an error message when hovering the cross next to line 38 : mail($emailTo, $subject, $message, "From: $form[email]"); The message is: "syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING". I've tried some things but it hasn't made the cross disappear. # Also, in the "Test Results" tab I have this: Notice: Undefined index: fullname in /home/cyberbodw/www/site/assets/cache/HannaCode/contact_form.php on line 62 Notice: Undefined index: email in /home/cyberbodw/www/site/assets/cache/HannaCode/contact_form.php on line 67 Notice: Undefined index: comments in /home/cyberbodw/www/site/assets/cache/HannaCode/contact_form.php on line 72 # The email message is well received but seems to be received 2 times in an interval of a few seconds. # The sender's email address doesn't appear in the "From" field (but it does appear in the message itself). Something like "(Unknown sender)" is written instead. (Perhaps related to the line of code next to the cross.) If it's not possible to have the sender's email address, is it possible to have something like "Contact form" in the "From" field, and how? (It's what appears in the "Subject" field currently.) # There is this: // set this to the email address you want to send to (or pull from a PW field) $emailTo = 'whatever@gmail.com'; // or if not set, we'll just email the default superuser if(empty($emailTo)) $emailTo = $users->get($config->superUserPageID)->email; How can I pull it from a second user (only view and edit rights for the moment) that is not the superuser? From a PW Field, and how? Is there a "superUserPageID" "equivalent" for the second user? Is "superUserPageID" used directly (it seems) or does it have to be replaced by the real ID? Can we find the second user('s) page ID, and, if yes, how? # Perhaps I'm forgetting one... NB: I know why I don't write often , it takes me too much time. I wonder how much time it takes (in general of course and more or less) for other people for average to large posts. Thank you in advance
    1 point
  13. 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
    1 point
  14. 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
  15. @Mont Hello, In Firebug, the rule is: body { background: url("images/bg.gif") repeat scroll 0 0 #e4ebee; } In the css file, it's different. Wouldn't it be "better" to precise repeat-x? Otherwise, it can also repeat itself on several lines under the footer.
    1 point
  16. It's fine if Fredi works for you FormHelper and FrontendContentManager need some work to be compatible with the latest dev, but at the moment I have some other projects.
    1 point
  17. I just pushed a new branch to the github repository that adds the clockpicker popup as seen in the screenshot above. If you want to try it simply use the files from the clockpicker branch. If all goes well with your testing I'll merge this change into the master branch and bump the version. Thanks!
    1 point
  18. Dynamically build js/css files per single site neglect the purpose of client site caching, which would result in poor performance especially on first visits. Also this sounds quite complex just to stitch together some images and text. In my experience most of my clients even don't want that much control over the layout as long as they can change the content.
    1 point
  19. Been there, did it, tried it, all failed. The reason why I ended up with processwire. Now processwire would bring me back to the beginning ? Don't buy it.
    1 point
  20. I don't know if this helps, but why not call those fields directly from the page object? For the if statement a single = would be wrong as you'd assign ids and not compare them. == and === are here the same, as id's are always of the same type. foreach($mainnav as $p) { if($page->rootParent->id == $p->id) $current = 'style="background: #fff;"'; else $current = ''; echo "<a href='{$p->url}' $current class='{$p->name}'>" . strToUpper($p->name) . "</a>"; } Edit: Soma was faster
    1 point
  21. 1 point
  22. Never mind, wasn't the conditional anyway. This did it: foreach ($mainnav as $p) { $p = $p->id; if($page->rootParent->id == $p) $current = 'style="background: #fff;"'; else $current = ''; echo "<a href='{$pages->get($p)->url}' $current class='{$pages->get($p)->name}'>" . strToUpper($pages->get($p)->name) . "</a>"; }
    1 point
  23. Hi @diogo, Thanks The goal of this project: - a portal for guests - a platform for vendors (members) Wauw! Thanks for the link to this great tutorial I print it out, and read it this evening Regards, Christophe
    1 point
  24. How about a little "progressive enhancement" and using flexbox: http://jsfiddle.net/gwp7u69f/ ?
    1 point
  25. I dont see where you set $user->assigned in your code. You could try the following, hoping that it will solve your problem. (note the move of $page->of(false); ) if ($input->post->addfriend && $user->isLoggedin()) { $user->assigned = date("Y-m-d H:i:s"); $page->friends_waiting->add($user); $page->of(false); $page->save(); }
    1 point
  26. @Neeks: Which version of the module you're using? In the latest version there is a check if it is "ProcessPageEdit". @Tyssen: Glad to here it's now working for you I may integrate that
    1 point
  27. Hi Soma, I totally agree with you. Currently, It is possible to use absolute paths using the $config->scripts and $config->styles arrays (see: https://github.com/conclurer/ProcessWire-AIOM-All-In-One-Minify/issues/20). We are planning to change the behavior of AIOM in AIOM 4. Thanks in advance! Marvin
    1 point
  28. Hi guys, Thanks for all these clear info. You are helpful people! I like it Regards, Christophe Grtz from Belgium!
    1 point
  29. Yeah, that’s true. It works in Ryan’s example at the beginning of the thread because he calls isLoggedin() before overwriting the $user variable with a normal string (strings in php are indeed different from objects). So, confusingly, in that example $user refers to different things at separate times. He should probably edit the post for posterity.
    1 point
  30. Other will answer this with more authority than I Ollie, but I have found PW beta to be more stable and robust than some other production s/w. So on occasions I have used beta for production sites, after extensive tests (so far all of which always work flawlessly). It really is a very, very good CMS. Enjoy
    1 point
  31. Great article, but it didn't worked without ignoring some headers: fastcgi_ignore_headers "Cache-Control" "Expires" "Set-Cookie";
    1 point
  32. Please make it a possible for absolute path from root. That traversal back with ../../ is not very convenient at all. I have a fork I'm using ever since where I changed it to allow for files outside templates folder using root path. It's an assumption that shouldnt be made in th first place. The hx
    1 point
  33. All good now, thanks. And very nice module, previewing feature especially. Just one small request: it would be useful to have a way to override the Title Format on certain pages, e.g. the home page. For most pages I'll want to have Page Name – Site Name, but on the home page I'll want to have Site Name – Site Description, but with title format enabled I get Site Name – Site Description – Site Name.
    1 point
  34. This module cause a conflict with pages on the front end that use the id variable. "../json_pages/?id=234|434" will crash processwire. this seems to be the caused by: LINE: 92. $editedPage = wire('pages')->get($this->config->input->get->id) I think checking that you are in the backend before running the above query might solve the issue. btw, great plugin.
    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. It would be great if I could set the maximum number of backups created by this module I want to keep.
    1 point
  37. @netcarver here are some more timepickers that I was looking at when trying to quickly implement one with your field: https://fgelinas.com/code/timepicker/ : this one is based on jQuery UI http://jdewit.github.io/bootstrap-timepicker/ : personally, I like this one best, but it relies on Bootstrap and I couldn't get it to work with BS 3 and with other date fields present in the same form http://weareoutman.github.io/clockpicker/jquery.html : funny picker looks like a clock http://amsul.ca/pickadate.js/
    1 point
  38. Pete, I've really been enjoying this module. For the new admin theme, I had to make a small adjustment (margin-left: 0) to the last part in the CSS: #Inputfield_admin_column_left > div, #Inputfield_admin_column_right > div { background: none; border: none; padding: 0; margin-left: 0; /* ryan added this */ } That change doesn't appear to cause any issues with the old admin theme either.
    1 point
×
×
  • Create New...