Drupal https://www.zengenuity.com/ en Decoupling Your Backend Code from Drupal (and Improving Your Life) with Wrappers Delight https://www.zengenuity.com/blog/2014-12/decoupling-your-backend-code-drupal-and-improving-your-life-wrappers-delight <span class="field field--name-title field--type-string field--label-hidden">Decoupling Your Backend Code from Drupal (and Improving Your Life) with Wrappers Delight</span> <div class="paragraph html"> <div class="container"> <p>If you've ever written a lot of custom code for a Drupal site, then you know it can be a tedious and error-prone experience. Your IDE doesn't know how Drupal's data structures are organized, and it doesn't have a way to extract information about configured fields to do any autocomplete or check data types. This leads to some frustrations:</p> <ul> <li>You spend a lot of time typing out by hand all the keys in every array of doom you come across. It's tedious, verbose, and tiring.</li> <li>Your code can contains errors your IDE won't alert you to. Simple typos can go unnoticed since the IDE has no idea how the objects and arrays are structured.</li> <li>Your code is tightly coupled to specific field names, configured in the database. You must remember these, because your IDE can't autocomplete them.</li> <li>Your code is tightly coupled to specific field types. (If you start off with a text field and then decide to switch to an email field, for example, you will find the value is now stored in a different key of the data array. You need to update all your custom code related to that field.)</li> <li>It can be easy to create cross-site-scripting vulnerabilities in your code. You need to keep in mind all the field data that needs to be sanitized for output. It only takes one forgotten spot to open your site to attacks.</li></ul> <p><a href="https://www.drupal.org/project/wrappers_delight">Wrappers Delight</a> (<a href="https://www.drupal.org/project/wrappers_delight">https://www.drupal.org/project/wrappers_delight</a>) is a development tool I've created to help address these issues, and make my life easier. Here's what it does:</p> <ul> <li>Provides wrapper classes for common entity types, with getters and setters for the entities' base properties. (These classes are wrappers/decorators around EntityMetadataWrapper.)</li> <li>Adds a Drush command that generates wrapper classes for the specific entity bundles on your site, taking care of the boilerplate getter and setter code for all the fields you have configured on the bundles.</li> <li>Returns sanitized values by default for the generated getters for text fields. (raw values can be returned with an optional parameter)</li> <li>Allows the wrapper classes to be customized, so that you can decouple your custom code from specific Drupal field implementation.</li></ul> <p>With Wrappers Delight, your custom code can be written to interface with wrapper classes you control instead of with Drupal objects directly. So, in the example of changing a text type field to an email type field, only the corresponding wrapper class needs to be updated. All your other code could work as it was written.</p> <h2>But wait, there's more!</h2> <p>Wrappers Delight also provides bundle-specific wrapper classes for EntityFieldQuery, which allow you to build queries (with field-level autocomplete) in your IDE, again decoupled from specific internal Drupal field names and formats. Whatever your decoupled CRUD needs may be, Wrappers Delight has you covered!</p> <h2>Getting Started with Wrappers Delight</h2> <p>To generate wrapper classes for all the content types on your site:</p> <ol> <li>Install and enable the Wrapper Delight module.</li> <li>Install Drush, if you don't already have it.</li> <li>At the command line, in your Drupal directory, run <code>drush wrap node</code>.</li> <li>This will generate a new module called "wrappers_custom" that contains wrapper classes for all your content types.</li> <li>Enable the wrappers_custom module, and you can start writing code with these wrapper classes.</li> <li>This process works for other entity types, as well: Users, Commerce Products, OG Memberships, Messages, etc. Just follow the Drush command pattern: <code>drush wrap ENTITY_TYPE</code>. For contributed entity types, you may need to enable a submodule like Wrappers Delight: Commerce to get all the base entity properties.</li></ol> <h2>Using the Wrapper Classes</h2> <p>The wrapper classes generated by Wrappers Delight have getters and setters for the fields you define on each bundle, and they inherit getters and settings for the entity's base properties. The class names follow the pattern <code>BundlenameEntitytypeWrapper</code>. So, to use the wrapper class for the standard article node type, you would do something like this:</p> <pre><span>$article </span><span>= new </span><span>ArticleNodeWrapper</span><span>(</span><span>$node</span><span>);<br /></span><span>$body_value </span><span>= </span><span>$article</span><span>-></span><span>getBody</span><span>();<br /></span><span>$image </span><span>= </span><span>$article</span><span>-></span><span>getImage</span><span>();</span></pre> <p>Wrapper classes also support passing an ID to the constructor instead of an entity object:</p> <pre><span>$article </span><span>= new </span><span>ArticleNodeWrapper</span><span>(</span><span>$nid</span><span>);</span></pre> <p>In addition to getters that return standard data arrays, Wrappers Delight creates custom utility getters for certain field types. For example, for image fields, these will all work out of the box:</p> <pre><span>$article </span><span>= new </span><span>ArticleNodeWrapper</span><span>(</span><span>$node</span><span>);<br /></span><span>$image_array </span><span>= </span><span>$article</span><span>-></span><span>getImage</span><span>();<br /></span><span>$image_url </span><span>= </span><span>$article</span><span>-></span><span>getImageUrl</span><span>();<br /></span><span>$image_style_url </span><span>= </span><span>$article</span><span>-></span><span>getImageUrl</span><span>(</span><span>'medium'</span><span>);<br /></span><span>$absolute_url </span><span>= </span><span>$article</span><span>-></span><span>getImageUrl</span><span>(</span><span>'medium'</span><span>, </span><span>TRUE</span><span>);<br /></span><span><br /></span><span>// Get a full <img> tag (it's calling theme_image_style<br />// under the hood)<br /></span><span>$image_html </span><span>= </span><span>$article</span><span>-></span><span>getImageHtml</span><span>(</span><span>'medium'</span><span>);</span></pre> <h2>Creating New Entities and Using the Setter Methods</h2> <p>If you want to create a new entity, wrapper classes include a static <code>create()</code> method, which can be used like this:</p> <pre><span>$values </span><span>= array</span><span>(<br /></span><span> </span><span>'title' </span>=> <span>'My Article'</span><span>,<br /></span><span> </span><span>'status' </span>=> <span>1</span><span>,<br /></span><span> </span><span>'promote' </span>=> <span>1</span><span>,<br /></span><span>);<br /></span><span>$article </span><span>= </span><span>ArticleNodeWrapper</span><span>::</span><span>create</span><span>(</span><span>$values</span><span>);<br /></span><span>$article</span><span>-></span><span>save</span><span>();</span></pre> <p>You can also chain the setters together like this:</p> <pre><span>$article </span><span>= </span><span>ArticleNodeWrapper</span><span>::</span><span>create</span><span>();<br /></span><span>$article</span><span>-></span><span>setTitle</span><span>(</span><span>'My Article'</span><span>)<br /></span><span> </span><span>-></span><span>setPublished</span><span>(</span><span>TRUE</span><span>)<br /></span><span> </span><span>-></span><span>setPromoted</span><span>(</span><span>TRUE</span><span>)<br /></span><span> </span><span>-></span><span>save</span><span>();</span></pre> <h2>Customizing Wrapper Classes</h2> <p>Once you generate a wrapper class for an entity bundle, you are encouraged to customize it to your specific needs. Add your own methods, edit the getters and setters to have more parameters or different return types. The Drush command can be run multiple times as new fields are added to your bundles, and your customizations to the existing methods will not be overwritten. Take note that Wrappers Delight never deletes any methods, so if you delete a field, you should clean up the corresponding methods (or rewrite them to get the data from other fields) manually.</p> <h2>Drush Command Options</h2> <p>The Drush command supports the following options:</p> <ul> <li>--bundles: specify the bundles to export (defaults to all bundles for a given entity type)</li> <li>--module: specify the module name to create (defaults to wrappers_custom)</li> <li>--destination: specify the destination directory of the module (defaults to sites/all/modules/contrib or sites/all/modules) </li></ul> <h2>Packaging Wrapper Classes with Feature Modules or Other Bundle-Supplying Modules</h2> <p>With the options listed above, you can export individual wrapper classes to existing modules by running a command like the following:</p> <p><code>drush wrap node --bundles=blog --module=blog_feature</code></p> <p>That will put the one single wrapper class for blog in the blog_feature module. Wrappers Delight will be smart enough to find this class automatically on subsequent runs <strong>if you have enabled the blog_feature module</strong>. This means that once you do some individual exports, you could later run something like this:</p> <p><code>drush wrap node</code></p> <p>and existing classes will be updated in place and any new classes would end up in the wrappers_custom module.</p> <h2>Did You Say Something About Queries?</h2> <p>Yes! Wrappers Delight includes a submodule called Wrapper Delight Query that provides bundle-specific wrapper classes around EntityFieldQuery. Once you generate the query wrapper classes (by running <code>drush wrap ENTITY_TYPE</code>), you can use the find() method of the new classes to execute queries:</p> <pre><span>$results </span><span>= </span><span>ArticleNodeWrapperQuery</span><span>::</span><span>find</span><span>()<br /></span><span> </span><span>-></span><span>byAuthor</span><span>(</span><span>$uid</span><span>)<br /></span><span> </span><span>-></span><span>bySomeCustomField</span><span>(</span><span>$value1</span><span>)<br /></span><span> </span><span>-></span><span>byAnotherCustomField</span><span>(</span><span>$value2</span><span>)<br /></span><span> </span><span>-></span><span>orderByCreatedTime</span><span>(</span><span>'DESC'</span><span>)<br /></span><span> </span><span>-></span><span>range</span><span>(</span><span>0</span><span>, </span><span>10</span><span>)<br /></span><span> </span><span>-></span><span>execute</span><span>();</span></pre> <p>The results array will contain objects of the corresponding wrapper type, which in this example is ArticleNodeWrapper. That means you can immediately access all the field methods, with autocomplete, in your IDE:</p> <pre><span>foreach </span><span>(</span><span>$results </span><span>as </span><span>$article</span><span>) {<br /></span><span> </span><span>$output </span><span>.= </span><span>$article</span><span>-></span><span>getTitle</span><span>();<br /></span><span> </span><span>$output </span><span>.= </span><span>$article</span><span>-></span><span>getImageHtml</span><span>(</span><span>'medium'</span><span>);<br /></span><span>}</span></pre> <p>You can also run queries across all bundles of a given entity type by using the base wrapper query class:</p> <pre><span>$results </span><span>= </span><span>WdNodeWrapperQuery</span><span>::</span><span>find</span><span>()<br /></span><span> </span><span>-></span><span>byAuthor</span><span>(</span><span>$uid</span><span>)<br /></span><span> </span><span>-></span><span>byTitle</span><span>(</span><span>'%Awesome%'</span><span>, </span><span>'LIKE'</span><span>)<br /></span><span> </span><span>-></span><span>execute</span><span>();</span></pre> <p>Note that results from a query like this will be of type WdNodeWrapper, so you'll need to check the actual bundle type and re-wrap the object with the corresponding bundle wrapper in order to use the bundle-level field getters and setters.</p> <h2>Wrapping Up</h2> <p>So, that's Wrappers Delight. I hope you'll give it a try and see if it makes your Drupal coding experience more pleasant. Personally, I've used on four new projects since creating it this summer, and it's been amazing. I'm kicking myself for not doing this earlier. My code is easier to read, WAY easier to type, and more adaptable to changes in the underlying architecture of the project.</p> <p>If you want to help me expand the project, here are some things I could use help with:</p> <ul> <li>Additional base entity classes for common core and contrib entities like comments, taxonomy terms, and Workflow states.</li> <li>Additional custom getter/setter templates for certain field types where utility functions would be useful, such as Date fields.</li> <li>Feedback from different use cases. Try it out and let me know what could make it work better for your projects.</li> </ul> <p>Post in <a href="https://www.drupal.org/project/issues/wrappers_delight">the issue queue</a> (<a href="https://www.drupal.org/project/issues/wrappers_delight">https://www.drupal.org/project/issues/wrappers_delight</a>) if you have questions or want to lend a hand.</p> </div> </div> <span>Wayne Eaker</span>December 3, 2014 <div class="tags"> <div class="container"> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal" hreflang="en">Drupal</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal-planet" hreflang="en">Drupal Planet</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/module-development" hreflang="en">Module Development</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/wrappers-delight" hreflang="en">Wrappers Delight</a></span> </div> </div> Wed, 03 Dec 2014 19:48:07 +0000 Wayne Eaker 200 at https://www.zengenuity.com The Week in Drupal: January 4, 2013 https://www.zengenuity.com/blog/2013-01/week-drupal-january-4-2013 <span class="field field--name-title field--type-string field--label-hidden">The Week in Drupal: January 4, 2013</span> <div class="paragraph html"> <div class="container"> <p>A look back at interesting modules, articles and other Drupal news of the last week: December 29 - January 4.</p> <p><a href="https://www.flickr.com/photos/kaibara/5266826588/" title="Frozen Drops by kaibara87, on Flickr"><img src="https://farm6.staticflickr.com/5290/5266826588_e3a7458033.jpg" width="500" height="333" alt="Frozen Drops" /></a></p> <h2>Drupal News</h2> <p><strong><a href="https://groups.drupal.org/node/275008" title="Drupal core announcements: January 15th deadline set for configuration metadata discussions">Drupal core announcements: January 15th deadline set for configuration metadata discussions</a></strong></p> <h2>Great Posts and Tutorials</h2> <p><strong><a href="https://www.leveltendesign.com/blog/ian-whitcomb/whats-wrong-project-application-queue" title="Whats Wrong with the Project Application Queue?">Whats Wrong with the Project Application Queue?</a></strong></p> <p><strong><a href="https://atendesigngroup.com/blog/looking-at-drupal-8-javascript-changes" title="Looking at Drupal 8's JavaScript Changes">Looking at Drupal 8’s JavaScript Changes</a></strong></p> <p><strong><a href="https://julian.granger-bevan.me/blog/internet-websites-drupal/how-to-use-mandrill-to-get-drupals-messages-through" title="How to: Use Mandrill to Get Drupal's Messages Through">How to: Use Mandrill to Get Drupal’s Messages Through</a></strong></p> <h2>Interesting New Modules</h2> <p><strong><a href="https://drupal.org/sandbox/iwhitcomb/1879012" title="Views Responsive Grid">Views Responsive Grid</a></strong> - Provides a views plugin for displaying content in a responsive(mobile friendly) grid layout.</p> <p><strong><a href="https://drupal.org/project/opengraph_filter" title="Opengraph Filter">Opengraph Filter</a></strong> - An input filter that adds an summary of a webpage, from the urls found in the text. Like Facebook does when you post a link.</p> <p><strong><a href="https://drupal.org/project/file_entity_preview" title="File Entity Preview">File Entity Preview</a></strong> - Provides a widget for file fields which displays a preview of the uploaded file as configured with the File Entity module.</p> <p><strong><a href="https://drupal.org/sandbox/charlie_love/1880114" title="GlewTiles">GlewTiles</a></strong> - A port of <a href="https://www.droptiles.com/">DropTiles</a> code to Drupal 7 as a theme with active Modern <span class="caps">UI</span> tiles similar to Windows 8.</p> <p><strong><a href="https://drupal.org/project/md_wordcloud" title="MD WordCloud"><span class="caps">MD</span> WordCloud</a></strong> - Creates a block and page for each taxonomy vocabulary and shows it as wordcloud.</p> </div> </div> <span>Wayne Eaker</span>January 4, 2013 <div class="tags"> <div class="container"> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/configuration-management" hreflang="en">Configuration Management</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal" hreflang="en">Drupal</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal-community" hreflang="en">Drupal Community</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/email" hreflang="en">Email</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/facebook" hreflang="en">Facebook</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/file-entity-module" hreflang="en">File Entity module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/javascript" hreflang="en">Javascript</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/taxonomy-module" hreflang="en">Taxonomy module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/theming" hreflang="en">Theming</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/views-module" hreflang="en">Views module</a></span> </div> </div> Fri, 04 Jan 2013 17:19:16 +0000 Wayne Eaker 198 at https://www.zengenuity.com Introducing Our New Drupal Training Program: DrupalTutor.com https://www.zengenuity.com/blog/2013-01/introducing-our-new-drupal-training-program-drupaltutorcom <span class="field field--name-title field--type-string field--label-hidden">Introducing Our New Drupal Training Program: DrupalTutor.com</span> <div class="paragraph html"> <div class="container"> <p>After months of hard work, I’m happy to announce the launch of our new Drupal training program: <a href="https://drupaltutor.com">DrupalTutor.com</a>. DrupalTutor.com combines the best of aspects of in-person and online training to make comprehensive Drupal training classes conviently accessible to more people at an affordable cost.</p> <h2>What’s wrong with existing Drupal training options?</h2> <p>Drupal training is currently offered in two basic formats:</p> <h3>Self-Teaching</h3> <p>This consists mainly of books and online videos, supplemented by a lot of Google searches and (hopefully) some visits to local Drupal user groups. This approach is common because it’s inexpensive and easy to get to started. However, it has a lot of drawbacks. Drupal is pretty complex, and it takes a long time to learn. It’s easy to get lost when following along with books or videos or to run into errors that you don’t know how to fix. Books and videos can get out-of-date fairly quickly, and don’t address all the possible ways to combine modules to accomplish various tasks. Students who follow this approach often tell me they know how to do a lot of individual tasks, but they can’t put it all together to get their site up and running.</p> <h3>Formal In-Person Classes</h3> <p>One of the best ways to get a comprehensive understanding of Drupal is with an in-person training class. These classes are offered by many development firms, ours included. With a formal class, you get the benefit of being able to ask questions and get help when you get stuck. However, we have found that they can be difficult for students to manage. First off, they’re expensive. A typical “site builder” level course costs $800 - $1200. Second, the classes are taught in a particular place at a particular time. Students wanting to take the classes often have to travel to neighboring cities, which is inconvienient. Finally, Drupal classes are often multi-day intensive programs, which can be too much, too fast. A typical site builder’s course is 12 − 15 hours, over two days. In my experience, that’s too much for a normal person to absorb.</p> <h2>Experimenting with Online Training Classes</h2> <p>Last fall, we ran a trial of an online, live course. I taught the same material as our normal in-person site builder’s course, but I delivered the training in evening sessions over GotoWebinar. (There were six 3-hour sessions.) This format far exceeded our expectations, and from the feedback we received, those of the students, as well. (see the reviews) The evening classes, accessible from home, were convenient, and the ability to ask questions and have me troubleshoot error messages was seamless. The response was overwhelmingly positive, and several of the students asked for more advanced classes to continue their progress.</p> <h2>The Next Iteration: DrupalTutor.com</h2> <p><a href="https://drupaltutor.com"><img src="https://www.zengenuity.com/sites/default/files/migrated/drupaltutor-drop400.png" width="200" height="259" /></a> Taking what we learned from last fall’s trial, we’ve designed a new approach to online Drupal training, <a href="https://drupaltutor.com">DrupalTutor.com</a>. Classes at DrupalTutor.com will be delivered as a hybrid of pre-recorded video, online assignments, and live lab sessions. For example, for the <a href="https://drupaltutor.com/courses/building-websites-drupal-7">Building Websites with Drupal 7</a> course will consist of six weekly video lessons (2 to 2.5 hours each), a weekly online assignment, and six 1-hour live lab session. While the bulk of the instruction will be covered in the weekly videos, students will be able to use the live sessions to ask questions, get advice, and have the trainer troubleshoot errors they may have run into. Some students may also choose to work on the assignment during the lab session, so they can ask questions if they get stuck.</p> <p>With this new approach, we expect to be able to deliver more classes than ever before, available more conveniently than ever before, at more afforable price than we’ve ever offered. Our first class will be <a href="https://drupaltutor.com/courses/building-websites-drupal-7">Building Websites with Drupal 7</a>, will start January 25 and costs $295. In late February, we plan to add <a href="https://drupaltutor.com/courses/php-bootcamp"><span class="caps">PHP</span> Bootcamp</a>, followed by <a href="https://drupaltutor.com/courses/drupal-7-module-development">Drupal 7 Module Development</a>. <a href="https://drupaltutor.com/courses/drupal-7-theme-development">Drupal 7 Theme Development</a> should be available in the Q2 of 2013.</p> <p>To read more detailed information about our classes, <a href="https://drupaltutor.com/courses">see our course descriptions page on DrupalTutor.com</a>.</p> </div> </div> <span>Wayne Eaker</span>January 2, 2013 <div class="tags"> <div class="container"> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal" hreflang="en">Drupal</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal-7" hreflang="en">Drupal 7</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/training" hreflang="en">Training</a></span> </div> </div> Wed, 02 Jan 2013 20:26:32 +0000 Wayne Eaker 197 at https://www.zengenuity.com The Week in Drupal: December 29, 2012 https://www.zengenuity.com/blog/2012-12/week-drupal-december-29-2012 <span class="field field--name-title field--type-string field--label-hidden">The Week in Drupal: December 29, 2012</span> <div class="paragraph html"> <div class="container"> <p>A look back at interesting modules, articles and other Drupal news of the last week: December 21 - 29, 2012.</p> <h2>Great Posts and Tutorials</h2> <p><strong><a href="https://codekarate.com/daily-dose-of-drupal/drupal-7-fivestar-module" title="Overview of the Drupal Fivestar Module">Overview of the Drupal Fivestar Module</a></strong></p> <p><strong><a href="https://www.webbykat.com/2012/12/adding-class-nodes-based-their-view-mode" title="Adding a class to nodes based on their view mode">Adding a class to nodes based on their view mode</a></strong></p> <p><strong><a href="https://webwash.net/videos/setup-markdown-filter-syntax-highlighting-drupal-7" title="Setup Markdown Filter with Syntax Highlighting in Drupal 7">Setup Markdown Filter with Syntax Highlighting in Drupal 7</a></strong></p> <h2>Interesting New Modules</h2> <p><strong><a href="https://drupal.org/project/batch_add_terms" title="Batch add terms">Batch add terms</a></strong> - A simple module for batch/mass adding taxonomy terms.</p> <p><strong><a href="https://drupal.org/sandbox/aboutblank/1872752" title="Registration Restriction">Registration Restriction</a></strong> - Allows site admins to restrict user registration by email domain.</p> <p><strong><a href="https://drupal.org/sandbox/kabanon/1873470" title="OG Node Access Per OG Role"><span class="caps">OG</span> Node Access Per <span class="caps">OG</span> Role</a></strong> - Provide a view permission for group content per <span class="caps">OG</span> role.</p> <p><strong><a href="https://drupal.org/project/views_og_cache" title="Views OG cache">Views <span class="caps">OG</span> cache</a></strong> - Add <a href="https://drupal.org/project/views">Views</a> time based cache per group.</p> <p><strong><a href="https://drupal.org/sandbox/mohamadaliakbari/1874276" title="Bootstrap menu">Bootstrap menu</a></strong> - Represent Drupal’s multi-level menus in Twitter bootstrap markup.</p> <p><strong><a href="https://drupal.org/sandbox/dshumaker/1875266" title="Google Content Experiments">Google Content Experiments</a></strong> - Enable the usage of Googles Content Experiments.</p> <p><strong><a href="https://drupal.org/project/backstretch_formatter" title="Backstretch Formatter">Backstretch Formatter</a></strong> - Provides a field formatter for jQuery Backstretch - A simple jQuery plugin that allows you to add a dynamically-resized, slideshow-capable background image to any page or element.</p> <p>The following two modules are entries for the <a href="https://moduleoff.com/contest/add-link-every-article-node-updates-date-field-today-using-ajax">current challenge at ModuleOff.com</a>.</p> <p><strong><a href="https://drupal.org/sandbox/btopro/1875912" title="Date link">Date link</a></strong> - Gives you a link on the display of most entities (nodes, users, taxonomy terms, and field collections) which lets you update the value of associated date fields to the current time.</p> <p><strong><a href="https://drupal.org/project/mark_complete" title="Mark Complete">Mark Complete</a></strong> - Enables you to click a link on a node display page that will update a date field to the current date. This is done via <span class="caps">AJAX</span> so there is no page refresh needed.</p> </div> </div> <span>Wayne Eaker</span>December 29, 2012 <div class="tags"> <div class="container"> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/date-module" hreflang="en">Date module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal" hreflang="en">Drupal</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/fivestar-module" hreflang="en">Fivestar module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/organic-groups-module" hreflang="en">Organic Groups module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/security" hreflang="en">Security</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/taxonomy-module" hreflang="en">Taxonomy module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/theming" hreflang="en">Theming</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/views-module" hreflang="en">Views module</a></span> </div> </div> Sat, 29 Dec 2012 15:51:37 +0000 Wayne Eaker 196 at https://www.zengenuity.com The Week in Drupal: December 21, 2012 https://www.zengenuity.com/blog/2012-12/week-drupal-december-21-2012 <span class="field field--name-title field--type-string field--label-hidden">The Week in Drupal: December 21, 2012</span> <div class="paragraph html"> <div class="container"> <p>A look back at interesting modules, articles and other Drupal news of the last week: December 14 - 21, 2012.</p> <h2>Drupal News</h2> <p><strong><a href="https://drupal.org/drupal-7.18" title="Drupal 7.18 and 6.27 released">Drupal 7.18 and 6.27 released</a></strong> - Security update: <strong><a href="https://drupal.org/SA-CORE-2012-004" title="SA-CORE-2012-004 - Drupal core - Multiple vulnerabilities"><span class="caps">SA</span>-<span class="caps">CORE</span>-2012-004 - Drupal core - Multiple vulnerabilities</a></strong></p> <p><strong><a href="https://portland2013.drupal.org/drupalcon-portland-call-papers-now-open" title="DrupalCon Portland 2013: Call for Papers is now Open!">DrupalCon Portland 2013: Call for Papers is now Open!</a></strong></p> <h2>Great Posts and Tutorials</h2> <p><strong><a href="https://blog.amazeelabs.com/en/implementing-donation-system-drupal-commerce" title="Implementing a donation system with Drupal Commerce">Implementing a donation system with Drupal Commerce</a></strong></p> <p><strong><a href="https://www.nextide.ca/skip_drupal_commerce_checkout_page" title="Skipping a Commerce Checkout page in the checkout workflow">Skipping a Commerce Checkout page in the checkout workflow</a></strong></p> <p><strong><a href="https://feedproxy.google.com/~r/lullabot/planet-feed/~3/-I3EFG4mSTc/module-monday-backup-and-migrate" title="Module Monday: Backup and Migrate">Module Monday: Backup and Migrate</a></strong></p> <p><strong><a href="https://codekarate.com/daily-dose-of-drupal/drupal-7-automated-logout" title="Screencast: Drupal 7 Automated Logout">Screencast: Drupal 7 Automated Logout</a></strong></p> <p><strong><a href="https://kahthong.com/2012/12/add-custom-contextual-links-drupal-node-teaser-pages" title="Add custom Contextual Links to Drupal node teaser pages">Add custom Contextual Links to Drupal node teaser pages</a></strong></p> <p><strong><a href="https://realize.be/introducing-field-formatter-conditions-drupal" title="Introducing Field formatter conditions for Drupal">Introducing Field formatter conditions for Drupal</a></strong></p> <p><strong><a href="https://www.lullabot.com/articles/mistakes-agencies-make-story-three-acts?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+lullabot%2Fplanet-feed+%28Lullabot.com+Drupal+News%29" title="Mistakes Agencies Make: A Story in Three Acts">Mistakes Agencies Make: A Story in Three Acts</a></strong></p> <h2>Interesting New Modules</h2> <p><strong><a href="https://drupal.org/sandbox/arrrgh/1868908" title="Node Field Privacy">Node Field Privacy</a></strong> - Allows you to have an optional “private” status attached to fields. When the private box is checked, only the node author and site admins can see the value of the field.</p> <p><strong><a href="https://drupal.org/sandbox/jibran/1867574" title="Views fieldset style plugin">Views fieldset style plugin</a></strong> - Adds the ability to show views rows as fieldset.</p> <p><strong><a href="https://drupal.org/sandbox/cafuego/1869916" title="Content Create Access">Content Create Access</a></strong> - Allows you to specify for each user which node types they may create. (without using roles)</p> <p><strong><a href="https://drupal.org/project/apachesolr_link" title="Apachesolr Link">Apachesolr Link</a></strong> - Enables the indexing of the target of a Link field along with the entity it is attached to in the <a href="https://drupal.org/project/apachesolr">Apache Solr</a> search index.</p> <p><strong><a href="https://drupal.org/sandbox/peritus/1868432" title="Bibliography ISBN">Bibliography <span class="caps">ISBN</span></a></strong> - A Bibliography dependent module that will create Biblio nodes based on ISBNs.</p> <p><strong><a href="https://drupal.org/sandbox/xandeadx/1871070" title="Advanced Poll Field Image">Advanced Poll Field Image</a></strong> - Sub-module for Advanced Poll to add Image in Choices.</p> <p><strong><a href="https://drupal.org/project/crossdomain" title="Crossdomain">Crossdomain</a></strong> - Creates a crossdomain.xml file for Flash files. Allows you to use a configuration screen to add additional domains.</p> <p><strong><a href="https://drupal.org/sandbox/artofeclipse/1871160" title="Domain Language">Domain Language</a></strong> - Adds a new detection/selection method on the language selection and it allow to set the default language for a specific domain.</p> <p><strong><a href="https://drupal.org/sandbox/bambilicious/1871148" title="Event Confirm">Event Confirm</a></strong> - Make the user confirm their action before executing it, with a popup. For example, “This will delete everything, <span class="caps">OK</span>?”</p> <p><strong><a href="https://drupal.org/sandbox/shah/1871288" title="Pathauto for RDF">Pathauto for <span class="caps">RDF</span></a></strong> - Creates readable paths for <span class="caps">RDF</span> versions of nodes.</p> <p><strong><a href="https://drupal.org/project/gapi" title="GAPI"><span class="caps">GAPI</span></a></strong> - General Purpose Web Services Connector <span class="caps">API</span></p> </div> </div> <span>Wayne Eaker</span>December 21, 2012 <div class="tags"> <div class="container"> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/business" hreflang="en">Business</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal" hreflang="en">Drupal</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal-8" hreflang="en">Drupal 8</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal-commerce" hreflang="en">Drupal Commerce</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/javascript" hreflang="en">Javascript</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/search" hreflang="en">Search</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/security" hreflang="en">Security</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/solr" hreflang="en">Solr</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/views-module" hreflang="en">Views module</a></span> </div> </div> Fri, 21 Dec 2012 15:11:00 +0000 Wayne Eaker 195 at https://www.zengenuity.com The Week in Drupal: November 2, 2012 https://www.zengenuity.com/blog/2012-11/week-drupal-november-2-2012 <span class="field field--name-title field--type-string field--label-hidden">The Week in Drupal: November 2, 2012</span> <div class="paragraph html"> <div class="container"> <p>A look back at interesting modules, articles and other Drupal news of the last week: October 26 - November 2, 2012.</p> <p><a href="https://2012.badcamp.net/"><img src="https://www.zengenuity.com/sites/default/files/migrated/bad_camp_2012.png" /></a></p> <h2>Drupal News</h2> <p><strong><a href="https://groups.drupal.org/node/264568" title="Drupal 8 announcements: Proposal for RESTful entity API">Drupal 8 announcements: Proposal for RESTful entity <span class="caps">API</span></a></strong></p> <p><strong><a href="https://groups.drupal.org/node/265088" title="Drupal 8 announcements: Don't reimplement support for arbitrary tail paths">Drupal 8 announcements: Don’t reimplement support for arbitrary tail paths</a></strong></p> <h2>Great Posts and Tutorials</h2> <p><strong><a href="https://theoleschool.com/blog/talking-drupal-nodejs" title="Talking to Drupal with Node.js">Talking to Drupal with Node.js</a></strong></p> <p><strong><a href="https://www.ostraining.com/blog/drupal/views-slideshow/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+ostrainingdrupal+%28OSTraining+Drupal%29" title="Creating a Drupal Slideshow with Views Slideshow">Creating a Drupal Slideshow with Views Slideshow</a></strong></p> <p><strong><a href="https://www.agileapproach.com/blog-entry/moving-forward-open-atrium-20" title="Moving Forward with Open Atrium 2.0">Moving Forward with Open Atrium 2.0</a></strong></p> <p><strong><a href="https://www.tsvenson.com/blog/2012/10/making-drupal-more-user-friendly" title="Making Drupal more User Friendly">Making Drupal more User Friendly</a></strong></p> <p><strong><a href="https://mrkadin.com/blog/node/69" title="Announcing PixGather">Announcing PixGather</a></strong> - A mobile app to upload pictures to a Drupal site.</p> <p><strong><a href="https://www.drupaler.co.uk/blog/corralling-permissions-grid" title="Corralling permissions into a grid">Corralling permissions into a grid</a></strong></p> <p><strong><a href="https://2bits.com/apache/memory-usage-revisited-when-open-buffet-not-blame-rather-views.html" title="Memory usage revisited: when the Open Buffet is not to blame, rather Views">Memory usage revisited: when the Open Buffet is not to blame, rather Views</a></strong></p> <p><strong><a href="https://www.gizra.com/content/message-subscribe-new-subscription-system" title="Message-subscribe — A New Subscription System">Message-subscribe — A New Subscription System</a></strong></p> <h2>Interesting New Modules</h2> <p><strong><a href="https://drupal.org/sandbox/sheldon/1827730" title="Transclude">Transclude</a></strong> - Defines an input filter that uses special tags to insert the contents of an external web page into text. For example, this can be useful is as a way of inserting the text of Wikipedia articles into nodes and having that text automatically updated whenever the Wikipedia article changes.</p> <p><strong><a href="https://drupal.org/sandbox/drupalrv/1827274" title="Word Link">Word Link</a></strong> - Allows you to replace certain words with links.</p> <p><strong><a href="https://drupal.org/sandbox/PDNagilum/1828986" title="Responsive Preview">Responsive Preview</a></strong> - View the site in different sizes easily with this module. A toolbar is displayed at the top with the configured resolutions. Click one and an iframe appears with the correct size applied. Great for developing responsive designs.</p> <p><strong><a href="https://drupal.org/sandbox/mas5d2/1829416" title="Apache Solr Document Links">Apache Solr Document Links</a></strong> - Adds indexing of external links the <a href="https://drupal.org/project/apachesolr">Apache Solr</a> Search Integration module.</p> <p><strong><a href="https://drupal.org/sandbox/curve/1828016" title="Taxonomy Tree Block">Taxonomy Tree Block</a></strong> - Generates blocks of formatted taxonomy menu blocks (in a tree format) on a vocabulary basis.</p> <p><strong><a href="https://drupal.org/project/userdelete" title="Bulk User Delete">Bulk User Delete</a></strong> - Allows you to bulk delete users through the admin interface. You provide a list of email addresses, one per line, and the users are deleted using the batch processing <span class="caps">API</span>.</p> <p><strong><a href="https://drupal.org/project/drifter" title="Drifter">Drifter</a></strong> - Allows any field to be floated left or right by providing a simple field formatter setting. A common use-case is floating images off to the side of a node.</p> <p><strong><a href="https://drupal.org/sandbox/noudroosendaal/1830070" title="Taxonomy Node Type">Taxonomy Node Type</a></strong> - Automatically adds a taxonomy term to a node based on the node type.</p> <p><strong><a href="https://drupal.org/project/commerce_mailchimp" title="Drupal Commerce MailChimp">Drupal Commerce MailChimp</a></strong> - This module integrates <a href="https://drupal.org/porject/commerce">Drupal Commerce</a> with the Mailchimp <span class="caps">API</span>’s ECommerce 360 feature for tracking store statistics for email campaigns sent via MailChimp.</p> <p><strong><a href="https://drupal.org/project/context_resolution" title="Context Resolution">Context Resolution</a></strong> - Extends the Context module with two additional conditions that enable developers to adapt to the users current screen resolution or browser width/height by using context reactions.</p> <p><strong><a href="https://drupal.org/sandbox/cpliakas/1827540" title="Date Facets">Date Facets</a></strong> - Provides date range facets similar to major search engines. (“Past hour”, “Past 24 hours”, “Past week”, etc.)</p> <p><strong><a href="https://drupal.org/project/og_invite_people" title="OG Invite People"><span class="caps">OG</span> Invite People</a></strong> - Adds a missing invite functionality for <span class="caps">OG</span> 7.x-2.x.</p> <p><strong><a href="https://drupal.org/sandbox/arosboro/1830730" title="Media OG Access">Media <span class="caps">OG</span> Access</a></strong> - Allows limiting media browser list to media in current group or group subscriptions that the current user is a member of.</p> </div> </div> <span>Wayne Eaker</span>November 2, 2012 <div class="tags"> <div class="container"> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/context-module" hreflang="en">Context module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal" hreflang="en">Drupal</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal-8" hreflang="en">Drupal 8</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal-commerce" hreflang="en">Drupal Commerce</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/high-performance" hreflang="en">High Performance</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/image-galleries" hreflang="en">Image Galleries</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/media-module" hreflang="en">Media module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/message-module" hreflang="en">Message module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/nodejs" hreflang="en">Node.js</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/open-atrium" hreflang="en">Open Atrium</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/organic-groups-module" hreflang="en">Organic Groups module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/responsive-design" hreflang="en">Responsive Design</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/search" hreflang="en">Search</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/security" hreflang="en">Security</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/services-module" hreflang="en">Services module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/solr" hreflang="en">Solr</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/taxonomy-module" hreflang="en">Taxonomy module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/theming" hreflang="en">Theming</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/ux" hreflang="en">UX</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/views-module" hreflang="en">Views module</a></span> </div> </div> Fri, 02 Nov 2012 14:50:08 +0000 Wayne Eaker 194 at https://www.zengenuity.com The Week in Drupal: October 26, 2012 https://www.zengenuity.com/blog/2012-10/week-drupal-october-26-2012 <span class="field field--name-title field--type-string field--label-hidden">The Week in Drupal: October 26, 2012</span> <div class="paragraph html"> <div class="container"> <p>A look back at interesting modules, articles and other Drupal news of the last week: October 19 - 26, 2012.</p> <p><a href="https://www.flickr.com/photos/alexchaffee/1746539367/" title="Drupal by purplepix, on Flickr"><img src="https://farm3.staticflickr.com/2355/1746539367_55ea04a746.jpg" width="500" height="375" alt="Drupal" /></a></p> <h2>Drupal News</h2> <p><strong><a href="https://buytaert.net/draft-for-drupal-community-working-group-charter" title="Dries Buytaert: Draft for Drupal Community Working Group charter">Dries Buytaert: Draft for Drupal Community Working Group charter</a></strong></p> <p><strong><a href="https://groups.drupal.org/node/264068" title="Registration is open for DrupalCamp Ohio 2012">Registration is open for DrupalCamp Ohio 2012</a></strong></p> <h2>Great Posts and Tutorials</h2> <p><strong><a href="https://heine.familiedeelstra.com/drupal-7-installer-vulnerability" title="Explaining the Drupal < 7.16 Installer vulnerability">Explaining the Drupal < 7.16 Installer vulnerability</a></strong></p> <p><strong><a href="https://www.agileapproach.com/blog-entry/so-you-want-build-drupal-product-0" title="So You Want to Build a Drupal Product...">So You Want to Build a Drupal Product…</a></strong></p> <p><strong><a href="https://drupal.psu.edu/blog/422" title="Profile Builder: The Features module of Distribution development">Profile Builder: The Features module of Distribution development</a></strong></p> <p><strong><a href="https://codekarate.com/daily-dose-of-drupal/drupal-7-imagefield-crop-module" title="Drupal 7 Imagefield Crop Module">An Introduction to the Imagefield Crop Module</a></strong></p> <p><strong><a href="https://2bits.com/drupal/drupal-not-saving-admin-pages-large-number-input-fields.html" title="Drupal not saving admin pages with large number of input fields">Drupal not saving admin pages with large number of input fields</a></strong></p> <p><strong><a href="https://affinitybridge.com/blog/testing-drupal-distributions-using-behat-mink-drupal-extension-and-travis-ci" title="Testing Drupal distributions using Behat, Mink, Drupal Extension, and Travis CI">Testing Drupal distributions using Behat, Mink, Drupal Extension, and Travis <span class="caps">CI</span></a></strong></p> <p><strong><a href="https://pixeljets.com/blog/rules-wont-work-properly-when-run-during-cron-if-you-use-node-access-restrictions" title="Rules won't work properly when run during cron, if you use node access restrictions">Rules won’t work properly when run during cron, if you use node access restrictions</a></strong></p> <p><strong><a href="https://wunderkraut.com/blog/simple-contact-form-per-content-item-with-entityform/2012-10-24" title="Simple contact form per content item with Entityform">Simple contact form per content item with Entityform</a></strong></p> <p><strong><a href="https://wunderkraut.com/blog/remote-entities-in-drupal-7/2012-10-25" title="Remote entities in Drupal 7">Remote entities in Drupal 7</a></strong></p> <p><strong><a href="https://funnymonkey.com/building-drupal-style-tiles-using-foundation-scss" title="Building Drupal Style Tiles using Foundation and SCSS">Building Drupal Style Tiles using Foundation and <span class="caps">SCSS</span></a></strong></p> <h2>Interesting New Modules</h2> <p><strong><a href="https://drupal.org/sandbox/windmaomao/1824050" title="ACL File Access"><span class="caps">ACL</span> File Access</a></strong> - Adds the access control per user over individual file.</p> <p><strong><a href="https://drupal.org/sandbox/agileadam/1822436" title="Commerce Coupon by Terms">Commerce Coupon by Terms</a></strong> - Allows coupons to apply to products tagged with specific taxonomy terms.</p> <p><strong><a href="https://drupal.org/sandbox/dayer4b/1822412" title="apachesolr_csv">apachesolr_csv</a></strong> - Takes the search results from an ApacheSolr search and uses them to generate a <span class="caps">CSV</span> file</p> <p><strong><a href="https://drupal.org/sandbox/craigweb/1820084" title="Site issue tracker">Site issue tracker</a></strong> - Aimed at making development of a site simpler by listing page-specific issues of a webpage on the page (above the content)</p> <p><strong><a href="https://drupal.org/sandbox/buddhamagnet/1823998" title="Nodewords Twitter">Nodewords Twitter</a></strong> - Support module for nodewords that allows creation of meta tags used by Twitter as detailed here: https://dev.twitter.com/docs/cards</p> <p><strong><a href="https://drupal.org/project/bootstrap_optimizer" title="Bootstrap optimizer">Bootstrap optimizer</a></strong> - Speeds up Drupal bootstrap process. See the module page forma description of how.</p> <p><strong><a href="https://drupal.org/project/entity_translation_tabs" title="Entity Translation Tabs">Entity Translation Tabs</a></strong> - Gives site editors an edit tab for each language that your site supports.</p> <p><strong><a href="https://drupal.org/project/message_subscribe" title="Message-subscribe">Message-subscribe</a></strong> - Provide a subscription system built on Flag 2.x and Message-notify 2.x.</p> <p><strong><a href="https://drupal.org/sandbox/millwardesque/1818684" title="RGraph Thermometer">RGraph Thermometer</a></strong> - Fundraiser thermometer.</p> <p><strong><a href="https://drupal.org/sandbox/drewish/1820184" title="Panels, Why so slow?">Panels, Why so slow?</a></strong> - Shows you how many milliseconds each pane takes to render.</p> <p><strong><a href="https://drupal.org/project/usersearchtoadmin" title="User Search to People Administration">User Search to People Administration</a></strong> - Moves user search into the user admin area.</p> <p><strong><a href="https://drupal.org/sandbox/bibo/1823868" title="APC Flush"><span class="caps">APC</span> Flush</a></strong> - An <span class="caps">APC</span> opcode cache flush automator for high performance Drupal-setups.</p> </div> </div> <span>Wayne Eaker</span>October 26, 2012 <div class="tags"> <div class="container"> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/behavior-driven-development" hreflang="en">Behavior Driven Development</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal" hreflang="en">Drupal</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal-7" hreflang="en">Drupal 7</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal-commerce" hreflang="en">Drupal Commerce</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal-community" hreflang="en">Drupal Community</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/entity-api" hreflang="en">Entity API</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/fieldapi" hreflang="en">FieldAPI</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/high-performance" hreflang="en">High Performance</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/imagefield-module" hreflang="en">Imagefield module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/install-profiles" hreflang="en">Install Profiles</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/panels-module" hreflang="en">Panels module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/rules-module" hreflang="en">Rules module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/search" hreflang="en">Search</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/security" hreflang="en">Security</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/solr" hreflang="en">Solr</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/testing" hreflang="en">Testing</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/theming" hreflang="en">Theming</a></span> </div> </div> Fri, 26 Oct 2012 17:03:14 +0000 Wayne Eaker 193 at https://www.zengenuity.com The Week in Drupal: October 19, 2012 https://www.zengenuity.com/blog/2012-10/week-drupal-october-19-2012 <span class="field field--name-title field--type-string field--label-hidden">The Week in Drupal: October 19, 2012</span> <div class="paragraph html"> <div class="container"> <p>A look back at interesting modules, articles and other Drupal news of the last week: October 12 - 19, 2012.</p> <p><a href="https://www.flickr.com/photos/adactio/5510265151/" title="Drupal M&Ms by adactio, on Flickr"><img src="https://farm6.staticflickr.com/5213/5510265151_a71abbb505.jpg" width="500" height="375" alt="Drupal M&Ms" /></a></p> <h2>Drupal News</h2> <p><strong><a href="https://drupal.org/drupal-7.16" title="Drupal 7.16 released">Drupal 7.16 released</a></strong></p> <p><strong><a href="https://drupal.org/node/1815912" title="SA-CORE-2012-003 - Drupal core - Arbitrary PHP code execution and Information disclosure"><span class="caps">SA</span>-<span class="caps">CORE</span>-2012-003 - Drupal core - Arbitrary <span class="caps">PHP</span> code execution and Information disclosure</a></strong></p> <p><strong><a href="https://groups.drupal.org/node/262353" title="Drupal core announcements: Proposal: Unify anonymous and authenticated users by separating accounts from users">Drupal core announcements: Proposal: Unify anonymous and authenticated users by separating accounts from users</a></strong></p> <p><strong><a href="https://groups.drupal.org/node/262503" title="Drupal core announcements: WYSIWYG in core and consequent filter system changes">Drupal core announcements: <span class="caps">WYSIWYG</span> in core and consequent filter system changes</a></strong></p> <h2>Great Posts and Tutorials</h2> <p><strong><a href="https://www.lullabot.com/articles/module-monday-views-data-export?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+lullabot%2Fplanet-feed+%28Lullabot.com+Drupal+News%29" title="Module Monday: Views Data Export">Module Monday: Views Data Export</a></strong></p> <p><strong><a href="https://www.lullabot.com/podcasts/drupalizeme-podcast-4-angie-byron-on-drupal-core-and-spark?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+lullabot%2Fplanet-feed+%28Lullabot.com+Drupal+News%29" title="Angie Byron on Drupal core and Spark (Podcast)">Angie Byron on Drupal core and Spark (Podcast)</a></strong></p> <p><strong><a href="https://drupalwatchdog.com/2/1/panelizer-layouts" title="Creating Specialized Layouts with Panelizer">Creating Specialized Layouts with Panelizer</a></strong></p> <p><strong><a href="https://grasmash.com/article/field-api-creating-your-own-field-formatters" title="Field API - Creating your own field formatters">Field <span class="caps">API</span> - Creating your own field formatters</a></strong></p> <p><strong><a href="https://www.metaltoad.com/blog/passing-multiple-values-through-exposed-filter" title="How to Pass Multiple Values through an Exposed Filter in Drupal Views">How to Pass Multiple Values through an Exposed Filter in Drupal Views</a></strong></p> <p><strong><a href="https://www.opensourcery.com/blog/jessehs/what-was-query" title="What *was* that query?">What <em>was</em> that query?</a></strong></p> <p><strong><a href="https://2bits.com/backup/fast-parallel-mysql-backups-and-imports-mydumper.html" title="Fast, Parallel MySQL Backups and Imports with Mydumper">Fast, Parallel MySQL Backups and Imports with Mydumper</a></strong></p> <h2>Interesting New Modules</h2> <p><strong><a href="https://drupal.org/sandbox/cpliakas/1815744" title="Standard Search Result Display">Standard Search Result Display</a></strong> - Overrides the core styles and templates for search so they closely match the <span class="caps">UI</span> of Google, Bing and Yahoo.</p> <p><strong><a href="https://drupal.org/project/ckeditor-googledoc" title="CkEditor Plugin: Google Doc embedded iframe">CkEditor Plugin: Google Doc embedded iframe</a></strong></p> <p><strong><a href="https://drupal.org/project/userpickit" title="User Pic Kit">User Pic Kit</a></strong> - Allow users to choose a picture from multiple providers. Includes integration with Gravatar, Robohash, and Drupal core picture uploads.</p> <p><strong><a href="https://drupal.org/project/geckoboard_push" title="Geckoboard Push">Geckoboard Push</a></strong> - For developers who want to show custom statistics on a Geckoboard dashboard using the Geckoboard Push <span class="caps">API</span>.</p> </div> </div> <span>Wayne Eaker</span>October 19, 2012 <div class="tags"> <div class="container"> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal" hreflang="en">Drupal</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal-7" hreflang="en">Drupal 7</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal-8" hreflang="en">Drupal 8</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal-community" hreflang="en">Drupal Community</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/fieldapi" hreflang="en">FieldAPI</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/mysql" hreflang="en">MySQL</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/panels-module" hreflang="en">Panels module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/search" hreflang="en">Search</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/security" hreflang="en">Security</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/theming" hreflang="en">Theming</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/views-module" hreflang="en">Views module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/wysiwyg-module" hreflang="en">WYSIWYG module</a></span> </div> </div> Fri, 19 Oct 2012 17:08:10 +0000 Wayne Eaker 192 at https://www.zengenuity.com The Week in Drupal: October 12, 2012 https://www.zengenuity.com/blog/2012-10/week-drupal-october-12-2012 <span class="field field--name-title field--type-string field--label-hidden">The Week in Drupal: October 12, 2012</span> <div class="paragraph html"> <div class="container"> <p>A look back at interesting modules, articles and other Drupal news of the last week: October 5 - 12, 2012.</p> <p><a href="https://www.flickr.com/photos/42478898@N07/7999875355/" title="Untitled by JoãoVentura, on Flickr"><img src="https://farm9.staticflickr.com/8443/7999875355_8137cf3086.jpg" width="375" height="500" alt="Untitled" /></a></p> <h2>Drupal News</h2> <p><strong><a href="https://association.drupal.org/election2013-results" title="Drupal Association News: Election Results">Drupal Association News: Election Results</a></strong></p> <p><strong><a href="https://groups.drupal.org/node/260163" title="Drupal core announcements: Backbone or other JS MVC framework in core">Drupal core announcements: Backbone or other <span class="caps">JS</span> <span class="caps">MVC</span> framework in core</a></strong></p> <p><strong><a href="https://groups.drupal.org/node/260803" title="Drupal core announcements: Proposal: Do core security releases on different dates than bugfix releases">Drupal core announcements: Proposal: Do core security releases on different dates than bugfix releases</a></strong></p> <p><strong><a href="https://bojhan.nl/first-mobile-usability-test-d8" title="First mobile usability test of D8">First mobile usability test of D8</a></strong></p> <h2>Great Posts and Tutorials</h2> <p><strong><a href="https://soundpostmedia.com/article/lets-talk-about-pci-compliance-ubercart-and-drupal-commerce" title="Let's Talk About PCI Compliance for Ubercart and Drupal Commerce">Let’s Talk About <span class="caps">PCI</span> Compliance for Ubercart and Drupal Commerce</a></strong></p> <p><strong><a href="https://www.zivtech.com/blog/views-quality-checklist" title="Views Quality Checklist">Views Quality Checklist</a></strong></p> <p><strong><a href="https://bleen.net/blog/hacking-core-contrib-responsibly">& Contrib Responsibly">Hacking Core <span class="amp">&</span> Contrib Responsibly</a></strong></p> <p><strong><a href="https://www.lullabot.com/articles/content-syndication-using-services-and-feeds?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+lullabot%2Fplanet-feed+%28Lullabot.com+Drupal+News%29" title="Content Syndication Using Services and Feeds">Content Syndication Using Services and Feeds</a></strong></p> <p><strong><a href="https://chocolatelilyweb.ca/blog/drupal-distros-sound-great" title=""Drupal distros sound great, but....""><span class="dquo">“</span>Drupal distros sound great, but….”</a></strong></p> <h2>Interesting New Modules</h2> <p><strong><a href="https://drupal.org/sandbox/Anybody/1810488" title="jQuery webks Responsive Tables">jQuery webks Responsive Tables</a></strong> - An adapter module to integrate <a href="https://github.com/JPustkuchen/jquery.webks-responsive-table">jQuery Plugin webks: Responsive Tables</a> into Drupal and make it fit the Drupal specific requirements (like table headers, form tables and others).</p> <p><strong><a href="https://drupal.org/project/ffc" title="Field formatter conditions">Field formatter conditions</a></strong> - Adds conditions to field formatters.</p> <p><strong><a href="https://drupal.org/project/apachesolr_parallel" title="Apache Solr Parallel Indexing">Apache Solr Parallel Indexing</a></strong> - Uses multiple threads to Index content 4 to 6 times faster than normal.</p> <p><strong><a href="https://drupal.org/sandbox/shaisachs/1804884" title="Google Civic">Google Civic</a></strong> - Uses the <a href="https://developers.google.com/civic-information/">Google Civic <span class="caps">API</span></a> to provide a polling place locator block and polling place display page.</p> <p><strong><a href="https://drupal.org/project/webform_submission_uuid" title="Webform Submission UUID">Webform Submission <span class="caps">UUID</span></a></strong> - Provides a <span class="caps">UUID</span> integration for Webform Submissions allowing them to be integrated with external Services, such as with the Webform Service module.</p> <p><strong><a href="https://drupal.org/project/linkit_uuid" title="LinkIt UUID">LinkIt <span class="caps">UUID</span></a></strong> - Allows LinkIt module targets to be stored by their <span class="caps">UUID</span>, which allows them to survive a migration or syndication to another site.</p> <p><strong><a href="https://drupal.org/project/node_display_field" title="Node Display Field">Node Display Field</a></strong> - Allows a node’s default display mode to be overridden by a field.</p> <p><strong><a href="https://drupal.org/project/field_collection_tabs" title="Field Collection Tab formatter">Field Collection Tab formatter</a></strong> - Provides a field formatter that allows you to output a multi value field collection field as a tabset, with one tab per field collection item.</p> <p><strong><a href="https://drupal.org/sandbox/el_toro/1809344" title="ImageField EPS">ImageField <span class="caps">EPS</span></a></strong> - enables Drupal to provide “pseudo-native” handling of the <span class="caps">EPS</span> (Encapsulated PostScript) vector format by providing a custom field to serve this purpose. EUploaded <span class="caps">EPS</span> files are converted to <span class="caps">PNG</span> for display and can be processed by Imagecache just as files uploaded using the regular image field.</p> <p><strong><a href="https://drupal.org/sandbox/alexh58/1809476" title="Features AGHAH">Features <span class="caps">AGHAH</span></a></strong> - Fixes the <span class="caps">AJAX</span> checkbox performance issues on <a href="https://drupal.org/project/features">Features</a> for Drupal 6.</p> </div> </div> <span>Wayne Eaker</span>October 12, 2012 <div class="tags"> <div class="container"> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal" hreflang="en">Drupal</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal-8" hreflang="en">Drupal 8</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal-community" hreflang="en">Drupal Community</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/features-module" hreflang="en">Features module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/imagefield-module" hreflang="en">Imagefield module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/javascript" hreflang="en">Javascript</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/mobile" hreflang="en">Mobile</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/responsive-design" hreflang="en">Responsive Design</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/security" hreflang="en">Security</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/solr" hreflang="en">Solr</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/theming" hreflang="en">Theming</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/views-module" hreflang="en">Views module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/webform-module" hreflang="en">Webform module</a></span> </div> </div> Fri, 12 Oct 2012 18:15:53 +0000 Wayne Eaker 191 at https://www.zengenuity.com The Week in Drupal: October 5, 2012 https://www.zengenuity.com/blog/2012-10/week-drupal-october-5-2012 <span class="field field--name-title field--type-string field--label-hidden">The Week in Drupal: October 5, 2012</span> <div class="paragraph html"> <div class="container"> <p>A look back at interesting modules, articles and other <a href="https://drupal.org">Drupal</a> news of the last week: September 28 - October 5, 2012.</p> <p><a href="https://www.flickr.com/photos/80901381@N04/7530054972/" title="Drops On Bright Orange Flower by A Guy Taking Pictures, on Flickr"><img src="https://farm9.staticflickr.com/8428/7530054972_576f6e2b22.jpg" width="500" height="374" alt="Drops On Bright Orange Flower" /></a></p> <h2>Drupal News</h2> <p><strong><a href="https://drupal.org/node/1794000" title="Voting Open - Community Elections 2013">Community Elections 2013</a></strong> - Voting open through October 7th.</p> <p><strong><a href="https://groups.drupal.org/node/259113" title="Drupal core announcements: New Routing system needs DX feedback and follow-ups">Drupal core announcements: New Routing system needs <span class="caps">DX</span> feedback and follow-ups</a></strong></p> <p><strong><a href="https://www.linuxjournal.com/content/drupal-special-edition?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+linuxjournalcom+%28Linux+Journal+-+The+Original+Magazine+of+the+Linux+Community%29" title="Drupal Special Edition of Linux Journal Out This Week">Drupal Special Edition of Linux Journal Out This Week</a></strong></p> <p><strong><a href="https://drupal.org/node/1795858" title="Drupal.org marketplace upgrade">Drupal.org marketplace upgrade</a></strong></p> <h2>Great Posts and Tutorials</h2> <p><strong><a href="https://chapterthree.com/blog/mark-ferree/drupal-developer-symfony-land" title="A Drupal Developer in Symfony Land">A Drupal Developer in Symfony Land</a></strong></p> <p><strong><a href="https://drupalwatchdog.com/2/2/behat-mink" title="Drupal Watchdog: Behat and Mink">Drupal Watchdog: Behat and Mink</a></strong></p> <p><strong><a href="https://www.midwesternmac.com/blogs/jeff-geerling/line-breaks-instead-paragraphs" title="Line breaks instead of Paragraphs in TinyMCE (by default)">Line breaks instead of Paragraphs in TinyMCE (by default)</a></strong></p> <p><strong><a href="https://www.trellon.com/content/blog/building-crm-core-feature" title="Building a New Feature for CRM Core">Building a New Feature for <span class="caps">CRM</span> Core</a></strong></p> <p><strong><a href="https://www.mediacurrent.com/blog/responsive-design-mobile-menu-options" title="Responsive Design: Mobile Menu Options">Responsive Design: Mobile Menu Options</a></strong></p> <p><strong><a href="https://btmash.com/article/2012-10-03/creating-linkit-plugin" title="Creating a Linkit Plugin">Creating a Linkit Plugin</a></strong></p> <p><strong><a href="https://www.ostraining.com/blog/drupal/broken/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+ostrainingdrupal+%28OSTraining+Drupal%29" title="Disable Broken Drupal Themes and Modules">Disable Broken Drupal Themes and Modules</a></strong></p> <p><strong><a href="https://blog.amazeelabs.com/en/create-ultimate-google-analytics-dashboard-drupal-part-3" title="Create the ultimate Google Analytics Dashboard for Drupal – Part 3">Create the ultimate Google Analytics Dashboard for Drupal – Part 3</a></strong></p> <p><strong><a href="https://www.bywombats.com/blog/10-03-2012/executing-arbitrary-javascript-forms-api-ajax-callback" title="Executing arbitrary JavaScript from a Forms API #ajax callback">Executing arbitrary JavaScript from a Forms <span class="caps">API</span> #ajax callback</a></strong></p> <h2>Interesting New Modules</h2> <p><strong><a href="https://drupal.org/project/wem" title="WEM"><span class="caps">WEM</span></a></strong> - This module allows you to create user segments, based on user actions, and then control site content per segment. Basically, you can give a different site experience to different users depending on the actions they have taken on your site.</p> <p><strong><a href="https://drupal.org/project/mchammer" title="MC Hammer"><span class="caps">MC</span> Hammer</a></strong> - <span class="caps">MC</span> Hammer is a mail composing tool based on panels.</p> <p><strong><a href="https://drupal.org/sandbox/jessepinho/1799242" title="Admin Toggle">Admin Toggle</a></strong> - Admin Toggle allows site admins to toggle the display of admin items on a page with the press of a single key. This allows admins to easily preview what their site looks like to non-admins</p> <p><strong><a href="https://drupal.org/sandbox/caesius/1801408" title="Linkchecker Highlight">Linkchecker Highlight</a></strong> - Highlight links determined to be broken by the Linkchecker module.</p> <p><strong><a href="https://drupal.org/project/retina_images" title="Retina Images">Retina Images</a></strong> - Adds an option to all image effects included with core to allow them to output high resolution images for high <span class="caps">DPI</span> or retina displays.</p> <p><strong><a href="https://drupal.org/sandbox/VasilyKraev/1802614" title="SMS Registration"><span class="caps">SMS</span> Registration</a></strong> - Extends the <a href="https://drupal.org/project/smsframework"><span class="caps">SMS</span> Framework module</a>, and allows users register, login to site and reset passwords by using their phone number.</p> <p><strong><a href="https://drupal.org/sandbox/vickeygit/1803030" title="Login one time mail to all">Login one time mail to all</a></strong> - Send one time login mail to all registered users except admin.</p> <p><strong><a href="https://drupal.org/project/og_clone" title="OG Clone"><span class="caps">OG</span> Clone</a></strong> - Makes it possible to clone an entire group and all its content, or, potentially, all its members.</p> <p><strong><a href="https://drupal.org/sandbox/NotGoddess/1804012" title="OG Color"><span class="caps">OG</span> Color</a></strong> - Integrates the color module with organic groups so if the group has a colorable theme the color scheme can be controlled on a per-group basis.</p> <p><strong><a href="https://drupal.org/project/cache_lifetime_options" title="Cache Lifetime Options">Cache Lifetime Options</a></strong> - increases the available options for core page cache up to a year</p> <p><strong><a href="https://drupal.org/sandbox/organicwire/1800776" title="Delayed ownership">Delayed ownership</a></strong> - This module allows anonymous users to create content and to keep their authorship when logging in.</p> <p><strong><a href="https://drupal.org/project/architecture" title="Architecture">Architecture</a></strong> - The Architecture module provides reports documenting how your Drupal site is architected.</p> <p><strong><a href="https://drupal.org/project/passwordless" title="Passwordless">Passwordless</a></strong> - This module replaces the regular Drupal login form with a modification of the password-request form, to give the possibility to log in without using a password. Every time a user needs to log in, only the e-mail address is required.</p> <p><strong><a href="https://drupal.org/project/suggested_modules" title="Suggested Modules">Suggested Modules</a></strong> - Suggested Modules allows module maintainers to enter a ‘suggests’ property to their module info file, with a link to a relevant module project page. This is different than ‘required’ modules as this does not inhibit using a module, merely suggests to the user that there are compatible/complimenting modules they may be interested in grabbing.</p> </div> </div> <span>Wayne Eaker</span>October 5, 2012 <div class="tags"> <div class="container"> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/analtyics" hreflang="en">Analtyics</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/behavior-driven-development" hreflang="en">Behavior Driven Development</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/caching" hreflang="en">Caching</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal" hreflang="en">Drupal</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal-8" hreflang="en">Drupal 8</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal-community" hreflang="en">Drupal Community</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/javascript" hreflang="en">Javascript</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/menus" hreflang="en">Menus</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/mobile" hreflang="en">Mobile</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/organic-groups-module" hreflang="en">Organic Groups module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/security" hreflang="en">Security</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/symfony" hreflang="en">Symfony</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/theming" hreflang="en">Theming</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/wysiwyg-module" hreflang="en">WYSIWYG module</a></span> </div> </div> Fri, 05 Oct 2012 17:23:34 +0000 Wayne Eaker 189 at https://www.zengenuity.com