Best Practices https://publish.mediacurrent.com/ en Speaking One Language: A UI/UX Glossary for Designers and Developers https://publish.mediacurrent.com/blog/speaking-one-language-uiux-glossary-designers-and-developers <span class="field field--name-title field--type-string field--label-hidden">Speaking One Language: A UI/UX Glossary for Designers and Developers</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><blockquote><p>“There are only two hard things in Computer Science: cache invalidation and naming things.” - Phil Karlton</p> </blockquote> <p>Well, I don’t know much of anything about cache invalidation (<a href="https://www.mediacurrent.com/who-we-are/team/">I know someone who does though!</a>) but I can tell you from experience that naming things is definitely HARD. </p> <p>With a shared vocabulary, <a href="https://www.mediacurrent.com/blog/designer-developer-how-go-paper-style-guide/">designers and developers</a> can more easily collaborate with each other and move between teams and projects without having to learn an entirely new language. Over time, we have come to recognize and utilize a lexicon of terms that we collectively understand.</p> <p>As a full-service digital agency, we have teams that concentrate within a wide variety of disciplines – from digital strategy to design to backend development and beyond. While we may be grouped together by discipline, day-to-day we’re most often working with cross-functional teams concentrated on solving specific problems for a variety of <a href="https://www.mediacurrent.com/work">projects and clients</a>. </p> <p>Without further ado, I present you with Mediacurrent’s glossary of web design terms that we use to reference the different bits, pieces, and aspects of our projects. The first section includes general terms we use day-to-day. The second half describes common <a href="https://www.mediacurrent.com/blog/building-components-breaking-it-down/">components</a>, which work like individual building blocks of pages, that we use from our creative team’s component library, otherwise known as <a href="https://www.mediacurrent.com/rain/">Rain</a>.</p> <h2>General Terms Designers and Developers Use</h2> <h3>Atomic Design</h3> <p><a href="http://atomicdesign.bradfrost.com/">A methodology created by Brad Frost</a> for breaking down the parts of your website using a chemistry analogy of atoms, molecules, and organisms that allows designers and developers to roll out higher quality, more consistent user interfaces quickly and efficiently.</p> <h3>Breadcrumb</h3> <p>A more common term, breadcrumbs are a string of links displayed near the top of a page that act as an index of sorts helping to orient the user to where they are in relation to other pages and sections of the site. They are also often hyperlinks, providing a secondary form of navigation to users.</p> <p class="text-align-center"><img alt="Breadcrumbs on a Mediacurrent Blog" data-entity-type="file" data-entity-uuid="b88e7449-54ee-485d-b014-94d46e68338b" height="421" src="/sites/default/files/media/image3_2.png" width="697" /></p> <p class="text-align-center"><em>Breadcrumbs on </em><a href="https://www.mediacurrent.com/"><em>mediacurrent.com</em></a></p> <h3>Button</h3> <p>A button is an element on a page that the user can interact with to trigger an event. It’s usually used as a way to confirm an action that the user is taking, like downloading something or submitting a form, and it often stands out from the page, making it a good way to give direction to the user. </p> <p class="text-align-center"><img alt="A 'submit' button on a form" data-entity-type="file" data-entity-uuid="11ec39da-cc23-46c7-9f02-e2e3ca1388b1" height="262" src="/sites/default/files/media/image31.png" width="692" /></p> <p class="text-align-center"><em>A button at the bottom of a form to send a message</em></p> <h3>CMS</h3> <p>A content management system, or CMS, is a software that lets a user create, edit, and publish content that makes up a website. It typically has a front-end user interface and a deployment system to publish to the site. Some examples include open source CMSs like Drupal and WordPress and proprietary ones like Sitecore.</p> <h3>Component(s)</h3> <p>In most of our conversations, “component” refers to a discrete piece of the front end interface (UI) of a website. Our library of common components is defined in a separate section below.</p> <h3>Content</h3> <p>Text and media elements (images, video, illustration, etc.) that make up components, pages, and websites.</p> <p class="text-align-center"><img alt="Copy and Image content on a card" data-entity-type="file" data-entity-uuid="e25a8a6f-2990-4d8a-9cea-b5bbdaab7883" height="357" src="/sites/default/files/media/image2_4.png" width="691" /></p> <p class="text-align-center"><em>Content in a Card Wide on the </em><a href="https://www.mediacurrent.com/drupal"><em>Mediacurrent.com Drupal page</em></a></p> <h3>CTA</h3> <p>Short for Call-To-Action, this is often a link or button that is the main desired user action for a particular section or piece of content.</p> <p class="text-align-center"><img alt="A call to action saying &quot;get the free ebook&quot; in the form of a button bellow some copy" data-entity-type="file" data-entity-uuid="e98edbd3-4315-467f-8d85-f0b1cc94dd70" height="301" src="/sites/default/files/media/image29.png" width="700" /></p> <p class="text-align-center"><em>A CTA on a resources page in the form of a button</em></p> <h3>Eyebrow</h3> <p>A small text label that is often used to categorize content. Typically this is placed above a headline, thus the “eyebrow” metaphor.</p> <p class="text-align-center"><img alt="An eyebrow that says &quot;An ebook from the Mediacurrent team&quot; on a card" data-entity-type="file" data-entity-uuid="e938a7ee-fc67-44ce-8e61-fff6a310b8a0" height="222" src="/sites/default/files/media/image21.png" width="703" /></p> <p class="text-align-center"><em>An eyebrow on a component that describes the content type</em></p> <h3>Gallery</h3> <p>A component used to display a collection of media items.</p> <p class="text-align-center"><img alt="A grid of pictures of nature" data-entity-type="file" data-entity-uuid="48d7309f-bfb2-4e17-aac4-0363b5f09e18" height="235" src="/sites/default/files/media/image28.png" width="744" /></p> <p class="text-align-center"><em>Pictures in a grid that make up a gallery component. In this case, the images open in a lightbox.</em></p> <h3>Header</h3> <p>The top-most portion of a web page. Often includes a logo and site navigation.</p> <p class="text-align-center"><img alt="A screenshot of the Mediacurrent website header" data-entity-type="file" data-entity-uuid="97966bc0-305e-4950-9418-b5cfe3d4e1c9" height="72" src="/sites/default/files/media/image18.png" width="818" /></p> <p class="text-align-center"><em>The header on Mediacurrent.com showing the logo, site navigation, and search function </em></p> <h3>Heading(s)</h3> <p>HTML tags that help give semantic meaning to text elements on a web page. Headings vary from H1 - H6 depending on the importance of text.</p> <p class="text-align-center"><img alt="A screenshot of a blog about use cases, showcasing 2 levels of headers" data-entity-type="file" data-entity-uuid="aeee9eed-20f2-4c46-be2a-7673baf1bdf6" height="470" src="/sites/default/files/media/image13_0.png" width="703" /></p> <p class="text-align-center"><em>In this image from a blog, there are multiple headings include an H2 (Use Cases) and two H3s (A/B testing and Bulk Redirects)</em></p> <h3>List</h3> <p>A group of elements and/or components.</p> <p class="text-align-center"><img alt="A screenshot of the Mediacurrent resources page" data-entity-type="file" data-entity-uuid="080204e1-b12f-4a83-b2d7-ef4984be7b17" height="366" src="/sites/default/files/media/image6_0.png" width="698" /></p> <p class="text-align-center"><em>A list of resources that includes components and content</em></p> <h3>Mockup</h3> <p>Part of the design phase, this is the step where wireframes are given personality to align with brand guidelines and user persona research.</p> <p class="text-align-center"><img alt="A screenshot of the Mediacurrent Rain page being made in Sketch" data-entity-type="file" data-entity-uuid="b048db48-4a53-4fc8-9976-fa7d3927e237" height="426" src="/sites/default/files/media/image15.png" width="696" /></p> <p class="text-align-center"><em>A mockup in Sketch showing layers and design elements</em></p> <h3>Paragraph</h3> <p>An HTML element that indicates a body of text, intended for displaying text created in a WYSIWYG editor.</p> <p class="text-align-center"><img alt="A screenshot of developer tools being used to highlight a paragraph element" data-entity-type="file" data-entity-uuid="244b919e-0d57-483f-bd8a-88319db4b951" height="471" src="/sites/default/files/media/image26.png" width="692" /></p> <p class="text-align-center"><em>A paragraph element seen in the HTML of a blog page</em></p> <h3>Teaser</h3> <p>Short amount of text used to entice or direct users to explore another section or page of the site. </p> <p class="text-align-center"><img alt="A screenshot of the Drupal Community page on Mediacurrent.com" data-entity-type="file" data-entity-uuid="5e7db25b-af3c-499d-a144-4ba6d6b19d77" height="269" src="/sites/default/files/media/image24.png" width="685" /></p> <p class="text-align-center"><em>Teasers driving visitors to learn more about participating and attending events</em></p> <h3>Viewport</h3> <p>The visible area of a web page on a device – think desktop, tablet, and mobile.</p> <p class="text-align-center"><img alt="A graphic showing the Mediacurrent homepage across multiple devices" data-entity-type="file" data-entity-uuid="a81e3e1d-d6cf-409c-ade1-397180805121" height="323" src="/sites/default/files/media/image4_3.png" width="678" /></p> <p class="text-align-center"><a href="https://www.mediacurrent.com/">Mediacurrent.com homepage</a> displayed on at a variety of viewport widths</p> <h3>Wireframe</h3> <p>Mostly a planning document, the wireframe is used to map out components and the types of content they contain. <a href="https://www.mediacurrent.com/blog/annotate-communicate/">Annotations</a> are often added to describe functionality, state changes, or personalization based on user type.</p> <p class="text-align-center"><img alt="A screenshot of a high-fidelity wireframe of a website made using Rain" data-entity-type="file" data-entity-uuid="0e28dfab-db94-4eaa-b52c-76f00db3fbb7" height="599" src="/sites/default/files/media/projects.invisionapp.com_share_59QJX16GUF2.png" width="283" /><img alt="A screenshot of a low-fidelity wireframe of a website made using Rain" data-entity-type="file" data-entity-uuid="d5784766-79df-4436-8c48-30a6139a3887" height="599" src="/sites/default/files/media/projects.invisionapp.com_share_BVPY6N0Z8F2.png" width="283" /></p> <p class="text-align-center"><em>(From left to right) High fidelity and low fidelity wireframes</em></p> <h3>WYSIWYG</h3> <p>Short for What You See Is What You Get, a WYSIWYG is a common type of field in a Content Management System (CMS) that allows editors to add content to a page with varying degrees of style and element customization. Often editors have the ability to add bold text, italic text, change alignment, add bulleted or numbered lists, insert an image within the text, along with a variety of other controls. HTML source code can often be edited as well.</p> <p class="text-align-center"><img alt="The Drupal WYSIWYG editor with some copy written and formatted" data-entity-type="file" data-entity-uuid="897ff140-9b18-4478-bb99-8dd416992c40" height="178" src="/sites/default/files/media/image25.png" width="759" /></p> <p class="text-align-center"><em>A WYSIWYG editor on Drupal, where the text formatting can be seen in the editor</em></p> <h2>Component Library Definitions</h2> <p>The components shown below can all be found in our Rain Component Collection (which are available for download at the end of this blog). They include desktop, tablet, and mobile versions, and when used in your project, can be customized to fit the look and feel of your brand. </p> <h3>Accordion<b> </b></h3> <p>A heading paired with body text and a hide/show icon. Typically presented in groups as rows, the body text is hidden by default and the section can be expanded by clicking the container that includes the heading and icon. An accordion offers a nice way to declutter an otherwise long page of text and allows users to self select the information they are looking for most.</p> <p class="text-align-center"><img alt="Accordion components for desktop, tablet, and mobile" data-entity-type="file" data-entity-uuid="1ff5f534-cb0c-4c16-9e0e-ff339e56192b" height="175" src="/sites/default/files/media/image16_0.png" width="721" /></p> <p class="text-align-center"><em>This accordion component is often used for frequently asked questions (FAQs)</em></p> <h3>Card</h3> <p>Serves as a teaser to a local or external piece of content. An image or video and a title are required. An eyebrow, subhead, summary text, and CTA link are optional elements that can be included at the editor’s discretion. Cards are often, but not always, presented as a list – see Card List below.</p> <p class="text-align-center"><img alt="Card components for desktop, tablet, and mobile" data-entity-type="file" data-entity-uuid="0a326eb0-6a6f-4154-8405-f405f17e0ff4" height="217" src="/sites/default/files/media/image20.png" width="702" /></p> <p class="text-align-center"><em>A card component with elements for any situation </em></p> <h3>Card List</h3> <p>A list of any number of Cards. Size and spacing are dictated by the number of Cards added and the size of the viewport.</p> <p class="text-align-center"><img alt="Card list components for desktop, tablet, and mobile" data-entity-type="file" data-entity-uuid="da41649c-3e7b-4a6d-82ca-3e0d18879f79" height="274" src="/sites/default/files/media/image19.png" width="687" /></p> <p class="text-align-center"><em>3 card components displayed in a horizontal list</em></p> <h3>Card List Wide</h3> <p>A summarized list of content, provided by the most recently added by default. Common uses might be a search results page or a staff directory.</p> <p class="text-align-center"><img alt="Card Wide List components for desktop, tablet, and mobile" data-entity-type="file" data-entity-uuid="e302a06a-a532-4b06-a03d-4267c55444bb" height="372" src="/sites/default/files/media/image10_0.png" width="680" /></p> <p class="text-align-center"><em>3 wide card components in a vertical list</em></p> <h3>Card<b> </b>Wide</h3> <p>Identical specs as the Card but presented horizontally at desktop viewports with the media on the left and the text elements on the right. Stacks vertically at mobile viewports. Unlike the Card, this component is used best individually to highlight a single item or piece of content.</p> <p class="text-align-center"><img alt="Card wide components for desktop, tablet, and mobile" data-entity-type="file" data-entity-uuid="eacb3a82-0d84-4369-a141-04495525c897" height="213" src="/sites/default/files/media/image23.png" width="689" /></p> <p class="text-align-center"><em>A card component with elements stacked to the right</em></p> <h3>Carousel</h3> <p>Displays a group of Hero components in an interactive carousel using slick.js, which provides a variety of customization options. Also often referred to as a “slider”.</p> <p class="text-align-center"><img alt="carousel components for desktop, tablet, and mobile" data-entity-type="file" data-entity-uuid="7e5fde4f-8e6d-498e-bb50-a5ee320f1aa7" height="217" src="/sites/default/files/media/image1_3.png" width="679" /></p> <p class="text-align-center"><em>A component that allows users to navigate through multiple Hero components (see Hero below) one at a time</em></p> <h3>FAQ</h3> <p>Question and answer pairs with an optional link.</p> <p class="text-align-center"><img alt="FAQ components for desktop, tablet, and mobile" data-entity-type="file" data-entity-uuid="725ac0cf-5cc6-462b-a12c-b142230a768a" height="134" src="/sites/default/files/media/image27.png" width="816" /></p> <p class="text-align-center"><em>Styled headings and paragraphs in a component display question-and-answer information</em></p> <h3>Form</h3> <p>A component that presents <a href="https://uxmovement.com/forms/why-infield-top-aligned-form-labels-are-quickest-to-scan/">Infield Top Aligned</a> form fields to the user. Frequently implemented with Drupal’s popular <a href="https://www.drupal.org/project/webform">Webform</a> module but also often integrated with 3rd party services like Eloqua, Marketo, Pardot, etc.</p> <p class="text-align-center"><img alt="form components for desktop, tablet, and mobile" data-entity-type="file" data-entity-uuid="f96e0e81-2968-4e28-835b-07c56682418f" height="175" src="/sites/default/files/media/image5_1.png" width="776" /></p> <p class="text-align-center"><em>A form component requiring a name, email, subject, and message along with a button to submit</em></p> <h3>Gallery Carousel</h3> <p>A media gallery that presents a carousel of large images with thumbnails below. Accepts both images and videos of different sizes.</p> <p class="text-align-center"><img alt="gallery carousel components for desktop, tablet, and mobile" data-entity-type="file" data-entity-uuid="2aa260bf-1396-4181-a57b-42bf74516dd0" height="249" src="/sites/default/files/media/image7_1.png" width="689" /></p> <p class="text-align-center"><em>The thumbnail images below the main element can be used to navigate through the items in the gallery</em></p> <h3>Gallery Lightbox</h3> <p>A media gallery using the Colorbox jquery plugin or similar other plugins, which provides a variety of customization options, accepts both images and videos of different sizes. </p> <p class="text-align-center"><img alt="gallery components for desktop, tablet, and mobile" data-entity-type="file" data-entity-uuid="214af073-5876-48e8-b6f7-adc9e02dbe9e" height="411" src="/sites/default/files/media/image11_0.png" width="678" /></p> <p class="text-align-center"><em>When gallery items, like the ones shown, are clicked, the full item opens in a lightbox</em></p> <h3>Hero</h3> <p>A teaser composed of a large image with a headline. Often displayed at the top of a page. In some cases a hero may be a collection of items acting as a Carousel (see Carousel above).</p> <p class="text-align-center"><img alt="hero components for desktop, tablet, and mobile" data-entity-type="file" data-entity-uuid="45c34969-0006-489a-ad62-d4d124822694" height="217" src="/sites/default/files/media/image1_4.png" width="679" /></p> <p class="text-align-center"><em>A large visual component with optional text that is most often displayed at the top of a page</em></p> <h3>Map</h3> <p>A Google Maps embed. Presentation options include either a full width embed or a 50/50 layout with the map embed and address information as text.</p> <p class="text-align-center"><img alt="full width map components for desktop, tablet, and mobile" data-entity-type="file" data-entity-uuid="e768b0f7-9c64-46b4-a7c6-1682b1dc0c0e" src="/sites/default/files/media/image8_0.png" /></p> <p class="text-align-center"><img alt="50/50 map components for desktop, tablet, and mobile" data-entity-type="file" data-entity-uuid="113341c8-4a8a-4cd7-a4d7-c29f16544d32" src="/sites/default/files/media/image17_0.png" /></p> <p class="text-align-center"><em>The section of a page that displays a physical location on a map, with or without an address </em></p> <h3>Media</h3> <p>Image or video with optional caption text.</p> <p class="text-align-center"><img alt="static and video media components for desktop, tablet, and mobile" data-entity-type="file" data-entity-uuid="76cbfe85-a3a9-4ae3-ba02-6931342f517e" height="512" src="/sites/default/files/media/image9_1.png" width="693" /></p> <p class="text-align-center"><em>A large component to highlight an image or video with an optional caption to provide more information to users</em></p> <h3>Quote</h3> <p>A quote with author attribution. Often used to add testimonials to informational product and service pages. Quote text and author name attribution are required. A job title and headshot are optional.</p> <p class="text-align-center"><img alt="quote components for desktop, tablet, and mobile" data-entity-type="file" data-entity-uuid="3561609d-8ddd-4e29-bb27-08257add46fd" height="240" src="/sites/default/files/media/image14.png" width="712" /></p> <p class="text-align-center"><em>A basic quote component with author attribution and image</em></p> <h2>Download our Component Collection</h2> <p>Along with this handy glossary, we have also packaged our collection of components as Sketch symbols that you can download today to jumpstart the design phase of your next project. The wireframes correspond with the information architecture that comes out-of-the-box with Rain but can be modified to suit your needs. Get them today by filling out the form below. Now, put on your galoshes and build some websites!</p> <p><iframe allowtransparency="true" frameborder="0" height="200" src="https://www2.mediacurrent.com/l/10072/2020-09-09/9v55x1" style="border: 0" type="text/html" width="100%"></iframe></p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/about/our-team/mediacurrent-team" lang="" about="/about/our-team/mediacurrent-team" typeof="schema:Person" property="schema:name" datatype="" class="username">Mediacurrent Team</a></span> <span class="field field--name-created field--type-created field--label-hidden">Wed, 09/09/2020 - 09:33</span> <div class="field field--name-field-persona field--type-entity-reference field--label-above"> <div class="field__label">Persona</div> <div class="field__item"><a href="/persona/marketer" hreflang="en">Marketer</a></div> </div> <div class="field field--name-field-services field--type-entity-reference field--label-above"> <div class="field__label">Services</div> <div class="field__item"><a href="/service/designux" hreflang="en">Design/UX</a></div> </div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/tags/development-0" hreflang="en">Development.</a></div> <div class="field__item"><a href="/tags/design" hreflang="en">Design</a></div> <div class="field__item"><a href="/tags/best-practices" hreflang="en">Best Practices</a></div> <div class="field__item"><a href="/tags/marketing" hreflang="en">Marketing</a></div> </div> </div> <div class="field field--name-field-related-content field--type-entity-reference field--label-above"> <div class="field__label">Related Content</div> <div class="field__items"> <div class="field__item"><a href="/videos/rain-streamline-your-design-resuable-components" hreflang="en">Rain: Streamline Your Design with Resuable Components</a></div> <div class="field__item"><a href="/blog/connecting-remote-team-social-distancing-world" hreflang="en">Connecting as a Remote Team in a ‘Social Distancing’ World</a></div> <div class="field__item"><a href="/blog/designer-developer-how-go-paper-style-guide" hreflang="en">Designer to Developer: How to Go from Paper to Style Guide</a></div> <div class="field__item"><a href="/ebooks/guide-component-based-theming-drupal" hreflang="en">Component-Based Theming for Drupal 8 &amp; 9 </a></div> </div> </div> <div class="gatsby-iframe-container"><iframe class="gatsby-iframe" src="https://preview-misriptide.gtsb.io/blog/speaking-one-language-uiux-glossary-designers-and-developers"></iframe></div> Wed, 09 Sep 2020 13:33:45 +0000 Mediacurrent Team 3642 at https://publish.mediacurrent.com Good Form: 6 Tips for a Smooth Sign-up Process https://publish.mediacurrent.com/blog/good-form-6-tips-smooth-sign-process <span class="field field--name-title field--type-string field--label-hidden">Good Form: 6 Tips for a Smooth Sign-up Process</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>A lot of effort goes into engaging your visitors to ‘Sign-up’ or ‘Contact’ you. You send them a warm and fuzzy invitation to complete the form, tell them all the great reasons why they should complete the form… but who likes to complete a form?  Guarantee a smooth sign-up process and increase the completion rate of your webforms with these six tips. </p> <h2>#1 Make it Flow</h2> <p>Before you begin designing that web form, it is always good to create a User Flowchart. Working to establish the form completion process from start to finish, a flowchart will help you: </p> <ul> <li>Determine what information is needed (and when)</li> <li>Decide what actions and interactions are appropriate</li> <li>Determine the order of actions</li> <li>Make considerations for new patterns to aid the completion process<br />  </li> </ul> <p>A User Flowchart can begin with a simple <a href="https://www.uxpin.com/studio/blog/creating-perfect-user-flows-for-smooth-ux/">Flow Outline</a>, which can then be placed in a flowchart diagram and later illustrated using low fidelity paper prototypes to find the most natural set of actions. When creating the outline consider the following:</p> <h3>The Business Objective</h3> <ul> <li>What is the main objective of the website for achieving successful completion of the form? (ie, we want to gather as many email addresses as possible.)</li> <li>What is the required information needed from the person completing the form? (ie, we need their name and email, and since our site is only for adults we also need their birth date.)</li> </ul> <h3>The User Persona</h3> <ul> <li> <p>Take advantage of the information gained from the <a href="https://www.mediacurrent.com/blog/introducing-our-updated-buyer-persona-ebook">User Personas</a> to focus on the user’s various needs and considerations. What problem do they want to solve and how can this form help them?</p> </li> <li> <p>What devices do they access most frequently to complete webforms? It’s good to know in advance if most of the users complete forms on their mobile phones and/or if they have inferior internet connectivity.</p> </li> </ul> <h3>The Entry Point</h3> <p>When designing a User Flowchart, keep in mind the point of entry. Perhaps they arrive after clicking the Call to Action on the homepage. Often webforms are a part of an email or social media campaign, or the user arrives at the form after an organic search. The users should be treated differently based on where they come from, and may need extra context to reiterate the goal of the form to help them get orientated when they arrive. Consider all possibilities.</p> <h2>#2 Keep it Short and Sweet</h2> <p>Don’t ask for information that’s not needed. Your subscription or contact form — or any form that gathers basic information — should only ask for the bare necessities needed in order to accomplish that goal. People will usually stick around long enough to enter their name, email address and password. Anything more than that should be the absolute minimum amount of information needed, with further data obtained in follow-up communications or by implementing a multi-step form (see tip #3). No one enjoys completing a form, so keep it as simple as possible! <a href="https://blog.formkeep.com/should-you-use-single-step-or-multi-step-forms/">Neil Patel</a> found that three form fields was the optimal number.  Pegasystems, a Mediacurrent client, leveraged third-party integrations on their Drupal 8 site to <a href="https://www.mediacurrent.com/work/case-study/pegasystems/">pre-fill form fields</a> with data and improved the user experience for returning visitors. </p> <blockquote><p>Reducing the number of form fields can increase conversion rates by 26 percent. </p> </blockquote> <h3>Email Address</h3> <ul> <li>Forward thinking email form fields provide suggestions for fixes when the email address has been entered incorrectly. … Did you mean @gmail.com?</li> <li>If you include an auto fix for mistyped email addresses you won’t need to require the user to enter it twice. Otherwise, it’s is a good approach to provide the extra guarantee that they’ve got it right.</li> <li>When the form is for creating an account or signing up for a newsletter, a current practice is to use the email address for the account instead of providing a separate username. This will cause less frustration with creating one that is not already in use, as well as remembering it every time they login.</li> </ul> <h3>Name</h3> <p>The person’s name is really only needed in instances where account personalization or custom communication is used. A frequent approach is to provide one field for their full name. This is a bonus since some users may have more than two words that make up their full name, and one field takes less time to complete (especially on mobile devices). Check first to see if the system requires the first name to be isolated for marketing purposes.</p> <h3>Password</h3> <ul> <li>Enough with the 'confirm password' already! They will lower your conversion rates. Give the user the option to actually SEE the password they’re entering with a ‘show password’ toggle, and they won’t have to enter it twice.</li> <li>Include a Password Strength Indicator. You can get creative with messaging to encourage users to try harder when creating a more secure password like Geeklist does: “Crack Time: 5 minutes”</li> <li>Depending on the level of site security, another time-saving feature is the ability to never have to enter their password again with the ‘Remember Me’ feature.</li> </ul> <h2>#3 Multi-step Forms</h2> <p>Single-step forms are the most common type of form found on a website. Sometimes, however, using the minimum amount of fields will not accomplish the goal of capturing essential user data. Instead of simply adding more fields to your one-page form you should be aware of an important point: </p> <blockquote><p>Multi-step forms have been found to increase conversions by as much as <a href="https://www.ventureharbour.com/multi-step-lead-forms-get-300-conversions/">300%</a> (without increasing website traffic). </p> </blockquote> <p>Multi-step forms convert well for several reasons:</p> <h3>Simplicity</h3> <p>Through the use of progressive disclosure design techniques, we can improve usability when only the minimum data required for a task is presented to the user. Multi-step forms provide the ability to break up a longer form into manageable steps so the user is not visually overwhelmed with requirements at the beginning or during the process. By including only one or two questions per step with a manageable number of steps overall will improve the user experience and significantly increase the chance they will complete it. </p> <h3>Reduced Psychological Friction</h3> <p>Multi-steps with a simplified interface allow the opportunity to use low-friction language in order to <a href="https://www.interaction-design.org/literature/article/how-to-prevent-negative-emotions-in-the-user-experience-of-your-product">reduce psychological friction</a>. In order to encourage the user to become immersed with an energized focus on the activity, we must always seek to minimize disruptions and use language that puts them in a positive state of mind. </p> <h3>Orientation</h3> <p><a href="https://medium.com/@CanvasFlip/best-practices-in-designing-awesome-progress-bars-e051bef10c28">Progress bars</a> encourage form completion. The most common use of visual progress trackers is when conducting an online purchase since those are often broken into a multiple-step process. It answers the questions the user may have during completion:</p> <ul> <li> How long will the form take?</li> <li>What comes next?</li> <li>Is anything happening?<br />  </li> </ul> <p>Displaying the steps required to complete the form along with where the user currently is at in the process will help manage their expectations and keep them oriented throughout.</p> <h3>Investment</h3> <p>By using the approach of requesting general information at the beginning of the form and moving towards more sensitive information requests towards the end of the form, the user feels more invested and is therefore more likely to complete.</p> <h3>Conditional Logic</h3> <p>Longer forms will sometimes benefit by using <a href="https://www.gravityforms.com/form-conditional-logic/">conditional logic</a> in order to personalize the experience. The user is provided with specific questions based on certain responses therefore eliminating irrelevant information retrieval while simultaneously obtaining more targeted data. Save them valuable time and customize their experience, and they will likely reward you by clicking the submit button.</p> <h2>#4 Make it Easy to Read</h2> <p>Including the labels and inputs, consider the context being used for all text on the page and work to ensure your font sizes are large enough to be legible on all devices. The amount of content on the page should be considered while also using best practices for accessibility. </p> <ul> <li>Recent trends are a 14px font size at minimum.</li> <li>When specifying a 16px font size for mobile devices, iOS will not zoom in when the user taps the field, because it’s not needed. This approach can be less distracting especially when there are multiple form fields on the page.</li> <li>Consider the maximum amount of characters that will be needed in all cases to ensure enough room is provided to complete each field. For example, some zip codes in other countries use a varying number of digits.</li> </ul> <h3>#5 Inform Everything </h3><p>Label All Things </p><p>The label of the form field you want the user to complete should ALWAYS remain visible. The labels can be placed outside of the field near the top, right, or left — or even better — use the <a href="http://uxmovement.com/forms/why-infield-top-aligned-form-labels-are-quickest-to-scan/">Infield Top Aligned Label</a>. This popular approach has been found to be the quickest to scan, has the best flow, and takes up less real estate. The labels are placed inside of the field, jumping to the top left corner as the user begins typing. Either way, at no point should the user lose sight of the information that’s needed inside of the field.</p> <h3>Inline Form Validation</h3> <ul> <li>Inform the user as they progress if anything has been entered incorrectly or if a field is missing information. Don’t make them click the ‘Submit’ button at the end of the form only to receive a bunch of red text telling them what they have to re-do.</li> <li>Micro interactions such as a simple green check or a red ‘X’ along with a brief message as the user completes the form will improve the workflow.</li> <li>Tell them if their CAPS LOCK IS ON.</li> </ul> <h3>Required or Optional?</h3> <p>Inform the user which fields are required and which are optional for the form to be accepted. An asterisk is often used to designate required information, but they are ignored by screen readers so make sure the required fields include the HTML5 ‘required’ attribute or the aria-required set to true.</p> <h3>Field Details</h3> <p>Explaining the information needed for each field is another great approach. If your Registration Sign-up Form will require a password with at least 6 unique characters with 2 of them numbers, tell them! Does the phone number field require a +, or a country code, or an area code? Tell them or show them.</p> <h3>Progress Bar</h3> <ul> <li>A form that’s broken into logical steps is easier to complete. If there are multiple steps that require multiple screens to complete, add a progress bar so the user knows where they are in the process.</li> <li>If possible, add a link to the completed steps in the progress bar so the user can go back if needed.</li> </ul> <h3>Safety</h3> <ul> <li>Make your users feel safe during sign-up by informing them about your terms, policies, or rules.</li> <li>Ensure them you will not share their information or spam their email.</li> <li>Provide an easy way to cancel or opt-out at any time, without much effort.</li> </ul> <h2>#6 Must be Mobile</h2> <p>While optimizing your site for mobile devices, any forms on your site should also be carefully considered. Not only are the screens smaller, but often the connections are slower, and entering text can be a bit tricky, so reducing the number of required fields is especially important. Luckily, recent innovation for mobile forms have provided modern solutions and compression techniques that could actually encourage sign-up on a mobile device:</p> <h3>Predefined DropDowns</h3> <ul> <li>Whenever possible, avoid open input fields and provide a dropdown list instead for easier completion.</li> <li>Dropdown selections should be written as they would normally display (ie, Credit Card expiry date: 01/20).</li> </ul> <h3>Collapsible Menus</h3> <p>This really helps when multiple offerings are available with details for each.</p> <h3>Predictive Search Fields</h3> <p>As the user begins typing the keyword, a list of possible results is provided. </p> <h3>Calendar Tools</h3> <p>Choose a calendar that is easy to use, with big targets that help to avoid user input errors</p> <h3>Combine Inputs When Possible</h3> <p>Providing only one field for a ‘Full Name’ instead of one for ‘First Name’ and one for ‘Last Name’ will speed up the form completion process and reduce user frustration. </p> <h3>Automatic Advance</h3> <p>The system should recognize when a date or email has been entered and take the user to the next field automatically, whenever possible.</p> <h3>Buttons That Engage</h3> <ul> <li>The ‘submit’ button should use a strong command verb that provokes emotion or enthusiasm, such as ‘Sign-Up Now!’</li> <li>Use bright, engaging (and accessible) color combinations. Color changes on tap add even more visual information about the progress.</li> <li>Ensure the tap target is large enough for users with big fingers or who have difficulty being accurate. Apple's iPhone Human Interface Guidelines recommends a minimum target size of 44 pixels wide 44 pixels tall.</li> </ul> <h2>Final Word</h2> <p>Achieving a smart form design isn't always easy, but it's well worth the effort. </p> <p>What are some great examples of forms you've seen? </p> <p><em>Editor’s note: This post was originally published on November 14, 2016, and has been updated for accuracy and comprehensiveness.</em></p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/who-we-are/team/cheryl-little" typeof="schema:Person" property="schema:name" datatype="">Cheryl Little</span></span> <span class="field field--name-created field--type-created field--label-hidden">Fri, 03/15/2019 - 13:41</span> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/tags/drupal" hreflang="en">Drupal</a></div> <div class="field__item"><a href="/tags/design" hreflang="en">Design</a></div> <div class="field__item"><a href="/tags/best-practices" hreflang="en">Best Practices</a></div> </div> </div> <div class="field field--name-field-redirects field--type-string-long field--label-above"> <div class="field__label">Redirects</div> <div class="field__item">/blog/good-form-5-tips-smooth-sign-process/<br /> /blog/good-form-5-tips-for-smooth-sign-up</div> </div> <div class="field field--name-field-related-content field--type-entity-reference field--label-above"> <div class="field__label">Related Content</div> <div class="field__items"> <div class="field__item"><a href="/blog/optimizing-mobile-user-experience" hreflang="en">Optimizing the Mobile User Experience</a></div> <div class="field__item"><a href="/blog/annotate-communicate" hreflang="en">Annotate to Communicate</a></div> </div> </div> <div class="gatsby-iframe-container"><iframe class="gatsby-iframe" src="https://preview-misriptide.gtsb.io/blog/good-form-6-tips-smooth-sign-process"></iframe></div> Fri, 15 Mar 2019 17:41:03 +0000 Cheryl Little 2748 at https://publish.mediacurrent.com [New ebook] Your Go To Guide For Website Accessibility https://publish.mediacurrent.com/blog/new-ebook-your-go-guide-website-accessibility <span class="field field--name-title field--type-string field--label-hidden">[New ebook] Your Go To Guide For Website Accessibility</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>At Mediacurrent, we believe that the web should be accessible to everyone. </p> <p>Our new guide is designed for content editors, marketers, developers, and key stakeholders seeking to expand their knowledge of website accessibility, learn how a holistic approach to website accessibility can strengthen an organization, and take advantage of actionable steps to improve their website.</p> <p>Topics include: </p> <ul> <li>The Accessibility Lifecycle</li> <li>Strategy: Data Drives ROI </li> <li>UX &amp; UI Designers: Gatekeepers of Functionality</li> <li>Back End Dev: A Solid Foundation </li> <li>Front End Dev: Bring the Pieces Together </li> <li>The Integral Role of Content Editors </li> <li>&amp; more!</li> </ul> <p> Download Your New Go To Guide For Website Accessibility:</p> <p><iframe allowtransparency="true" frameborder="0" height="1000" src="https://go.pardot.com/l/10072/2018-05-31/9n2g17" style="border: 0" type="text/html" width="100%"></iframe></p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/who-we-are/team/ally-delguidice-bove" typeof="schema:Person" property="schema:name" datatype="">Ally DelGuidice-Bove</span></span> <span class="field field--name-created field--type-created field--label-hidden">Thu, 05/31/2018 - 11:38</span> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/tags/web-accessibility" hreflang="en">Web Accessibility</a></div> <div class="field__item"><a href="/tags/accessibility" hreflang="en">Accessibility</a></div> <div class="field__item"><a href="/tags/ebook" hreflang="en">eBook</a></div> <div class="field__item"><a href="/tags/best-practices" hreflang="en">Best Practices</a></div> <div class="field__item"><a href="/tags/guide" hreflang="en">Guide</a></div> <div class="field__item"><a href="/tags/guidelines" hreflang="en">Guidelines</a></div> </div> </div> <div class="field field--name-field-redirects field--type-string-long field--label-above"> <div class="field__label">Redirects</div> <div class="field__item">/blog/new-guide-your-go-guide-website-accessibility/</div> </div> <div class="gatsby-iframe-container"><iframe class="gatsby-iframe" src="https://preview-misriptide.gtsb.io/blog/new-ebook-your-go-guide-website-accessibility"></iframe></div> Thu, 31 May 2018 15:38:35 +0000 Ally DelGuidice-Bove 3261 at https://publish.mediacurrent.com Friday 5: 5 Myths Busted about Content Strategy https://publish.mediacurrent.com/blog/friday-5-5-myths-busted-about-content-strategy <span class="field field--name-title field--type-string field--label-hidden">Friday 5: 5 Myths Busted about Content Strategy</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Happy Friday everybody! This week Ally DelGuidice-Bove joins us to talk to us about 5 Myths about Content Strategy.</p> <p><iframe allow="autoplay; encrypted-media" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/uANTxKMX-qI" width="560"></iframe></p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/who-we-are/team/mark-casias" typeof="schema:Person" property="schema:name" datatype="">Mark Casias</span></span> <span class="field field--name-created field--type-created field--label-hidden">Fri, 05/25/2018 - 13:32</span> <div class="field field--name-field-services field--type-entity-reference field--label-above"> <div class="field__label">Services</div> <div class="field__item"><a href="/service/digital-strategy" hreflang="en">Digital Strategy</a></div> </div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/tags/friday5" hreflang="en">friday5</a></div> <div class="field__item"><a href="/tags/content-strategy" hreflang="en">content strategy</a></div> <div class="field__item"><a href="/tags/best-practices" hreflang="en">Best Practices</a></div> </div> </div> <div class="field field--name-field-related-content field--type-entity-reference field--label-above"> <div class="field__label">Related Content</div> <div class="field__items"> <div class="field__item"><a href="/blog/martech-and-data-centralization" hreflang="en">Mediacurrent&#039;s MarTech Stack and Data Centralization</a></div> <div class="field__item"><a href="/ebooks/your-go-guide-website-accessibility" hreflang="en">Your Go To Guide For Website Accessibility</a></div> <div class="field__item"><a href="/work/case-study/butler-university" hreflang="en">Butler University </a></div> </div> </div> <div class="gatsby-iframe-container"><iframe class="gatsby-iframe" src="https://preview-misriptide.gtsb.io/blog/friday-5-5-myths-busted-about-content-strategy"></iframe></div> Fri, 25 May 2018 17:32:11 +0000 Mark Casias 3260 at https://publish.mediacurrent.com Mediacurrent Icon Library Development https://publish.mediacurrent.com/blog/mediacurrent-icon-library-development <span class="field field--name-title field--type-string field--label-hidden">Mediacurrent Icon Library Development</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>It’s been said that a picture is worth a thousand words. In the digital age pictures, emoji, and icons are worth that and so much more. Emoji are considered by some to be the <a href="https://www.domo.com/blog/emojis-are-the-new-body-language/">new body language</a>. Google recently scrambled to<a href="https://www.theverge.com/2017/10/30/16569346/burgergate-emoji-google-apple"> fix a hamburger emoji </a>that had the cheese depicted below the burger, a clear-cut culinary catastrophe and a faux pas that competitors Apple and Microsoft had not made.</p> <p>It may seem to border on (or even exceed) the ridiculous to make adjusting a single errant emoji a company’s top priority, but users have strong feelings about this sort of seemingly negligible detail. These feelings don’t usually surface until someone pulls the rug out from under their comfortable experience, like Spotify did when it <a href="https://thenextweb.com/insider/2015/06/15/its-just-a-color/">changed its icon’s color</a> to a slightly different shade of green a few years ago, causing an uproar.</p> <p>Emoji, and their cousin, the icon, are a big part of our digital lives whether we like it (or realize it) or not. These ubiquitous little buggers can charm and delight us or <a href="https://www.nngroup.com/articles/bad-icons/?utm_source=Alertbox&amp;utm_campaign=7d3b6ff527-bad-icons-delightful-designs_2017_11_20&amp;utm_medium=email&amp;utm_term=0_7f29a2b335-7d3b6ff527-40394961">lead us dreadfully astray.</a></p> <h2>Why do icons matter?</h2> <p>There are a lot of <a href="https://uxplanet.org/small-elements-big-impact-types-and-functions-of-ui-icons-87c6a74d366e">uses for the noble icon</a> out there in the digital world. At their best (and their simplest), icons are quick visual summaries of complicated concepts that make it easier for users to perform interactions with applications such as activating functionality and with content such as scanning text.</p> <p>Users are busy and brains aim to be efficient by ignoring unnecessary items. So as UX designers, we aim to make their experience as clutter-free and comfortable as possible. <a href="https://www.smashingmagazine.com/2016/10/icons-as-part-of-a-great-user-experience/">Icons are a boon</a> to this goal when used with discernment.</p> <h2>Why was it important for Mediacurrent to have our own icon library?</h2> <p>When redesigning mediacurrent.com, we knew we wanted to communicate succinctly and memorably to our audience, in a fresh voice reflective of our newest passions and the latest things we’ve learned. Freshly minted, custom-drawn icons were a key part of displaying our uniqueness as well as our values.</p> <blockquote><p>“Details matter, it’s worth waiting to get it right.”</p> </blockquote> <p class="text-align-right">- Steve Jobs</p> <p>Just like the packaging design for the iPhone, or the detailed stitching on a good pair of jeans, attention to detail sends a distinct set of messages: We are passionate about what we do. We care deeply about the quality of the work we produce. We think it’s worth taking the time to do it right. </p> <p data-entity-type="file" data-entity-uuid="7ecb5512-49af-4813-ac0e-fb0487abe683" style="text-align: center;"><span><img alt="Rowing Icon" data-entity-type="file" data-entity-uuid="7ecb5512-49af-4813-ac0e-fb0487abe683" height="66" src="/sites/default/files/media/Pasted%20Graphic-1.png" width="106" /><span title="Click and drag to resize">​</span></span></p> <p>Another one of our core values is displayed proudly in an individual icon. The icon we created to represent “culture” is an abstract representation of a team of rowers. This analogy is well known within our company, as our success comes from teaming up and working closely together. </p> <h2>What was the process like?</h2> <p>We approached this internal work much like any other design project, in fact! Beginning with a miniature discovery phase we covered the following bases.</p> <p><strong>Gathered technical, functional specs.</strong> The icons were to be used not just on the website by developers and content editors, but by marketing and sales professionals in presentations and reports. What size and type of icon files would suit all of their needs and ideally, make their jobs as easy as possible?</p> <p><strong>Created and trialled prototypes.</strong> Various export files were produced and tested in the applications they were destined for to assess factors such as resolution, scalability, and the ability for users to easily change the color of the icons.</p> <p><strong>Performed usability testing. </strong>Once a concept for the export formats was determined, a small set of icons was generated for testing by a representative group of the end users themselves. Based on these prototypes, the users affirmed the design direction as well as the functionality of the icons.</p> <p><strong>Itemized deliverables. </strong>A full list of icons needed was created, complete with references to previous ways we have illustrated these concepts, and inspiration for possible new ways we could go about it. An hours estimate was created for the work, and resources were allocated to the task.</p> <h2>And now...the fun part!</h2> <p>Once a solid process had been validated, it was full steam ahead. The icons were lovingly crafted in a<a href="https://www.psychologytoday.com/us/blog/the-playing-field/201402/flow-states-and-creativity"> state of flow</a> in Abode Illustrator using the pen tool. You can experience this nerdy “rush” yourself by playing <a href="http://bezier.method.ac/">The Bezier Game! </a></p> <p>Of course, no creative project would be complete without <a href="http://thevirtualinstructor.com/blog/the-importance-of-critique-art">peer review</a>. We are very fortunate here at Mediacurrent to have a robust collection of brilliant folks from designers to digital strategists to marketing experts to many developers with backgrounds in design. We are committed to being available for each other for quick reviews any time a colleague is stuck or just wants general feedback. This is the kind of supportive environment in which excellence thrives.</p> <h2>Happily ever after</h2> <p>The icons stacked up steadily and now feature prominently in Mediacurrent’s latest sales and marketing materials as well as on our redesigned website. Favorites include those whose inspiration came from the realm of science fiction, fantasy beasts, and playthings.</p> <p data-entity-type="file" data-entity-uuid="0bc71e22-a626-49a1-8665-002bc8539d7c" style="text-align: center;"><span><img alt="Mediacurrent Icons" data-entity-type="" data-entity-uuid="" src="/sites/default/files/media/j2DDFD-h9vp91PFTY5KNATGY80sL3vKByPlfZ07JGizW2shnchuVbU9ccFICj2w_qb9EMWusBBaszolZ9lDpghTp7NX7ileSm1cXGDbe81MHhUNUMhQCuOHALGLc1jhLJZ1Filrp.png" /><span title="Click and drag to resize"> </span></span></p> <h2>What’s next for the icon library?</h2> <p>It’s not the end of the story for these icons! While they (thankfully) are not likely to have lives of their own like <a href="https://www.rottentomatoes.com/m/the_emoji_movie/">some emoji</a>, we will continue to add to our set. We plan to release it under an open-source license on GitHub and will gladly take requests from the community for additional icons they might need as they use these in their own projects.</p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/who-we-are/team/becky-cierpich" lang="" about="/who-we-are/team/becky-cierpich" typeof="schema:Person" property="schema:name" datatype="" class="username">Becky Cierpich</a></span> <span class="field field--name-created field--type-created field--label-hidden">Wed, 03/28/2018 - 12:54</span> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/tags/services" hreflang="en">Services</a></div> <div class="field__item"><a href="/tags/best-practices" hreflang="en">Best Practices</a></div> </div> </div> <div class="gatsby-iframe-container"><iframe class="gatsby-iframe" src="https://preview-misriptide.gtsb.io/blog/mediacurrent-icon-library-development"></iframe></div> Wed, 28 Mar 2018 16:54:51 +0000 Becky Cierpich 3224 at https://publish.mediacurrent.com UX Design Evolution: Top UI/UX Design Trends for 2018 https://publish.mediacurrent.com/blog/ux-design-evolution-top-uiux-design-trends-2018 <span class="field field--name-title field--type-string field--label-hidden">UX Design Evolution: Top UI/UX Design Trends for 2018</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>As we begin a fresh, brand-spanking-new year, several UX design practices and technologies stand out as the most exciting and relevant. While they are not all necessarily bleeding edge or super trendy, these considerations are becoming more and more vital to our clients and will be at the forefront in the year to come and beyond. Here’s an overview of what we’re watching, how the UX landscape is shifting, its impact on marketing and consumer experience, and what it means to you!</p> <p><img alt="Data Driven UX Strategy" class="media-element file-default media-wysiwyg-align-center" data-delta="1" data-entity-type="" data-entity-uuid="" src="https://publish.mediacurrent.com/sites/default/files/ee5hiz8bvpbvgv22izeaot6wzyg4vibgnllssunam29fyk2ov2mq1jqeeunfmftul0zrjjvd-h7zfm7z4tf1_wrjowck5ywbqv1hq-bbf4_jneghl89uh2ghzvvmknv45da_nm0l.jpg" title="Data Driven UX Strategy" typeof="foaf:Image" /></p> <div> <div style="text-align: center;"> </div> <h2>Data-driven UX</h2> <p>What do you imagine when you think of a “designer”? Likely an artsy sort of person comes to mind, a wizard who can wave a wand and bring all the users to the yard. But I’m here to tell you - it’s not <a href="https://capturly.com/blog/what-is-data-driven-ux/">wizardry</a>. It is, in fact, science!</p> <p>Across the industry, much like scientists, designers are conducting controlled experiments and collecting data to determine the best approaches for presenting information and guiding users through interactions with digital systems. Following the latest <a href="https://www.nngroup.com/reports/">user research</a> is to designers what keeping up with medical journals is to doctors.</p> <p><img alt="Defining the best UX Strategy" class="media-element file-default media-wysiwyg-align-center" data-delta="2" data-entity-type="" data-entity-uuid="" src="https://publish.mediacurrent.com/sites/default/files/qhv-g6hukxowro59vdg-drg1yqi2bedui_n4kg0mlxtekmqmhk20fpvrt4op2kkjtpravhtv56yyxafc99al1kj7b7q4wfzet1ctee8n7tqlgdy1mjva7l29nhibzvpmbkniq_fa.jpg" title="Defining the best UX Strategy" typeof="foaf:Image" /></p> <p>It gets even better. Professional <a href="https://www.mediacurrent.com/services/digital-strategy">digital strategists</a> and data analysts can review your business and your website and make sense of all of this data for you. From competitor analyses to SEO audits, they collate numerical resources to produce a set of measurements for success, and a plan to get there. This is the mana that fuels the designer’s sorcery - and it’s really just numbers...and OK, maybe a little magic.<br />  </p> <h2>Evolving Navigation Patterns</h2> <p><img alt="Spotify's personalized playlists" class="media-element file-default media-wysiwyg-align-left" data-delta="3" data-entity-type="" data-entity-uuid="" height="533" src="https://publish.mediacurrent.com/sites/default/files/cobmkto7_0jfvlnv-xr0qk0xadgostdpqvfm2q8icoyr3fspp973okg8jfc326q7g7mtgrubpi3_moux7tovggahqpq83kvnydc-we6sdqfv2hxe_u5rijj5r4djtl0ci848r-lz.jpg" style="height: 533px; width: 300px;" title="Spotify's personalized playlists" typeof="foaf:Image" width="300" /></p> <p>Speaking of data-driven design, after extensive user testing, <a href="https://techcrunch.com/2016/05/03/spotify-ditches-the-controversial-hamburger-menu-in-ios-app-redesign/">Spotify ditched its hamburger menu</a> in favor of a strip of icons and titles along the bottom known as “tab bar navigation.” This is something that <a href="https://techcrunch.com/2013/09/18/facebooks-new-mobile-test-framework-births-bottom-tab-bar-navigation-redesign-for-ios-5-6-7/">Facebook had already done</a> a few years prior. Again, after extensive testing.</p> <p>Spotify tested the tab bar navigation pattern to see how it impacted user engagement. They found that users with the tab bar ended up clicking 9% more in general and 30% more on actual menu items. The tests also revealed that reducing the number of options in the tab bar increased the reach of Spotify’s programmed content, the company says.</p> <p>It’s certainly worth noting shifts in application design when choosing <a href="https://www.smashingmagazine.com/2017/04/overview-responsive-navigation-patterns/">responsive website navigation patterns</a> following a mobile-first approach. Regarding the hamburger menu, <a href="https://www.nngroup.com/articles/hamburger-menus/">Nielsen Norman Group</a> has found through testing that “Discoverability is cut almost in half by hiding a website’s main navigation. Also, task time is longer and perceived task difficulty increases.”</p> <p>But by all means, let’s not declare hamburger menus dead and gone. Like the world’s most notorious font, Comic Sans, there are <a href="https://www.dezeen.com/2014/11/27/vincent-connare-typography-interview-comic-sans-ms/">appropriate</a> and <a href="https://www.buzzfeed.com/sophiegadd/absolutely-beautiful-examples-of-comic-sans-in-the-wild?utm_term=.dfWjMbZoGn#.lgL9wmqgrp">inappropriate</a> uses for the familiar 3-bar stack. The purpose of navigation, lest we forget, is to help a user navigate a website. It answers the questions “Where can I go?” and “What can I do?”</p> <p>With data in hand and your company’s vision for the future in mind, information architecture and navigation can be crafted to prioritize key actions and content. This can still sometimes mean a hamburger menu because not all companies are Spotify. Would you like fries with that?<br />  </p> <h2>Persona-driven UX</h2> <p>Hand-in-hand with data-driven UX, goes persona-driven UX. What is a persona? <a href="https://www.interaction-design.org/literature/article/personas-why-and-how-you-should-use-them">A persona</a> is a made-up character synthesized from patterns observed in data collected from large numbers of users. Identifying key personas allows project teams to focus on the primary user journeys.</p> <p>There is also the notion of building atypical or “Rogue Personas” which act as edge cases to help establish boundaries (in the case of the Internet Troll or Phisher), fail safes (in the case of the Bumbling Noob), and highly accessible experiences for individuals with vision, hearing, or cognitive impairments.</p> <p>The data used to build personas comes from a number of sources including surveys, interviews, and analytics reports. The data is not only used to create profiles but to establish <a href="https://usabilitygeek.com/improving-persona-usability-goal-oriented-ux/">a set of goals</a> for each persona. These goals are the stops on the user journey for which designers will build guideposts.</p> <p>Once a design has been prototyped, user testing can be done with individuals who match the demography of the personas, to validate or refute the assumptions, and to gather useful feedback. At this stage of a project, it can really start to feel like a fun science experiment!</p> <p>Assessing a design as it develops against the wants and needs of these meaningful archetypes is a powerful tool. Personas help us ask the right questions as we work to create user experiences and to answer those questions from the perspective of the primary personas, rather than from our own.<br />  </p> <h2>VUI - Voice User Interface and Accessibility</h2> <p>“Alexa, will I need an umbrella today?”</p> <p>How many seconds would you save asking a question out loud rather than picking up a device to click or tap to get answers? Especially considering the distractions you may encounter on your device - it’s all too easy to sometimes forget why you picked it up in the first place!</p> <p>The screenless user experience is on the rise. It is often more convenient for users to interact with technology hands-free, with no visuals required. Driving, cooking, hosting a party - why stop what you’re doing when you can utter a voice command or ask a question?</p> <p>From Apple’s Siri and Microsoft’s Cortana to Google’s Assistant and Amazon’s Alexa, VUI is on the rise. It’s not only the UI for Apple’s AirPods, Google Home, and Amazon’s Echo, but it’s even being built into devices like speakers, televisions, vacuum cleaners, and lightbulbs.</p> <p>According to Gartner, by the end of 2017, <a href="https://www.gartner.com/smarterwithgartner/gartner-predicts-a-virtual-world-of-exponential-change/">room-based screenless devices will be a part of more than 10 million homes</a>. By 2019, they predict, <a href="https://www.gartner.com/newsroom/id/3551217">20% of user interactions with smartphones will take place via Virtual Personal Assistants</a>. By 2020, they predict, 30% of web browsing sessions will be done without a screen.</p> <p>As UX designers, we are constantly challenged to develop experiences that are consistent across a great many channels and VUI is just another of those - and a very exciting one! Interacting with Alexa can feel like a science fiction film come to life!</p> <p><img alt="Using Voice User Interface " class="media-element file-default media-wysiwyg-align-center" data-delta="4" data-entity-type="" data-entity-uuid="" src="https://publish.mediacurrent.com/sites/default/files/sqgrmhq5pdilxnic6xo_e8jgovvltpzjx_upcn_858azxn3zz1uhk8vcgfpfn9f84falmdh7ei-kj9drjl_yxc2qsbja6owsvnvhxxusolip4t7_jkheltvgopmvv4ztao3ca0qw.jpg" title="Using Voice User Interface " typeof="foaf:Image" /></p> <p>The good news is that websites built with accessibility for the visually impaired and with Search Engine Optimization in mind are already well-placed to be highly functional when approached through VUI. And good UX is good organization, so well-designed websites will play well with Alexa and her ilk.<br />  </p> <h2>More Personalized Experiences</h2> <p>Users of Amazon or other online shopping venues have long been accustomed to product recommendations based on their shopping habits. And certainly marketers know how to target us online with advertisements based on our browsing history.</p> <p>Users of Netflix and other streaming services are happy to scroll through lists of content related to what they’ve watched previously. But as a result of significant progress in AI and machine learning, a whole new level of personalization is here, creating more intimate experiences for users that build trust and secure brand loyalty.</p> <p><a href="https://www.researchgate.net/publication/307573833_Music_Personalization_at_Spotify">Entire teams at Spotify</a> focus on analyzing songs and listeners through collaborative filtering, machine learning, DSP and NLP approaches. They are constantly crawling the web for artist information, scanning each note in every one of their millions of songs for acoustic signals, and modelling their users' tastes with cluster analysis based on their historical and real-time listening patterns.</p> <p>It is Spotify’s <a href="https://www.engadget.com/2017/12/05/spotify-unwrapped-ed-sheeran-in-2017/">data-driven playlists</a> that set it apart from its competitors. As of last year, they had <a href="https://www.digitaltrends.com/music/apple-music-20-million/">millions more listeners than their closest competition</a>. Of course, Pandora’s <a href="https://www.pandora.com/about/mgp">Music Genome Project</a> has been categorizing tunes based on hundreds of unique characteristics since the early 2000’s. But <a href="https://www.digitaltrends.com/music/best-music-streaming-services/">Spotify wins</a> because of how they leverage their data to generate customized playlists for each user. For example, “Your Top Songs of 2017,” which can be a very emotional (or cringe-worthy) walk down memory lane!</p> <p>Personalization is going ever deeper. <a href="https://medium.com/netflix-techblog/artwork-personalization-c589f074ad76">Netflix recently revealed</a> that it is leveraging technology to assess not only what shows to recommend to their users, but what images to display along with those recommendations, customized to each specific user’s taste.</p> <p>As personalization becomes smarter and more ubiquitous, UX professionals will be able to design websites not only with persona-based journey patterns, but websites that learn and adapt to each individual user. Algorithms will decide what content is displayed based on the unique interaction history and behavior on the site for any given visitor, allowing for a truly customized experience.</p> <p>Of course, any potential privacy concerns should be anticipated and addressed at the outset in a way that is subtle but readily available. Personalization, when done well, can feel warm and “right” - it connects the user to the service on an emotional level. “They know me.” The user feels welcome and at home with the technology. Of course this is good for business, but putting that aside, creating these kind of deep, human connections is the greatest joy the UX field has to offer.</p> <p>In conclusion, as a new year dawns, it’s wonderful to be a part of a world of technology that is making people’s lives better: more convenient, more connected, more accessible to all.</p> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/who-we-are/team/becky-cierpich" lang="" about="/who-we-are/team/becky-cierpich" typeof="schema:Person" property="schema:name" datatype="" class="username">Becky Cierpich</a></span> <span class="field field--name-created field--type-created field--label-hidden">Mon, 01/08/2018 - 16:56</span> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/tags/design" hreflang="en">Design</a></div> <div class="field__item"><a href="/tags/ux" hreflang="en">UX</a></div> <div class="field__item"><a href="/tags/trends" hreflang="en">Trends</a></div> <div class="field__item"><a href="/tags/best-practices" hreflang="en">Best Practices</a></div> <div class="field__item"><a href="/tags/drupal" hreflang="en">Drupal</a></div> </div> </div> <div class="field field--name-field-related-content field--type-entity-reference field--label-above"> <div class="field__label">Related Content</div> <div class="field__items"> <div class="field__item"><a href="/blog/6-design-alternatives-avoid-slideshows" hreflang="en">6 Design Alternatives to Avoid Slideshows</a></div> <div class="field__item"><a href="/blog/love-user-experience-design" hreflang="en">For the LOVE of User Experience Design</a></div> </div> </div> <div class="gatsby-iframe-container"><iframe class="gatsby-iframe" src="https://preview-misriptide.gtsb.io/blog/ux-design-evolution-top-uiux-design-trends-2018"></iframe></div> Mon, 08 Jan 2018 21:56:39 +0000 Becky Cierpich 3163 at https://publish.mediacurrent.com Annotate to Communicate https://publish.mediacurrent.com/blog/annotate-communicate <span class="field field--name-title field--type-string field--label-hidden">Annotate to Communicate</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Someone once said, “if you have to explain the joke, it takes the fun out of it.” Well, the same can be said for designing a website. Explaining the important and sometimes technical details can be a tedious process many designers would avoid if possible. But when it comes to communicating the form and function of the user experience through <a href="https://en.wikipedia.org/wiki/Website_wireframe">wireframes</a>, explaining each element can make or break the project. It’s always a good idea to include annotations.<br />  </p> <h2>Types of Wireframes</h2> <p>First, let’s start at the beginning to avoid vague deliverables. Does every UX designer you’ve met create similar looking wireframes? There are about as many different styles of wireframes as there are websites on the world wide web, so chances are the term ‘wireframe’ by itself really isn’t saying much to your client.</p> <p>Most folks understand a wireframe to be a basic layout for a web page, in shades of grey. But other than that, what else should they expect? Will it be a basic paper drawing or a functional computer drawn detailed webpage? Usually, the type of wireframe provided is based on the budget and pace of the project, along with considerations for the type of site to be built, the scale of the overall project, and the depth of the sitemap. Sometimes more than one type of wireframe is used when user testing is needed. Once the most appropriate wireframe approach has been determined for the project, it’s a good idea to convey the definition in your deliverable documentation. Here is an example:<br />  </p> <h3>Low Fidelity Wireframe</h3> <ul> <li>Can be paper sketches or computer drawn.</li> <li>Abstract lines and shapes that represent spatial elements on the page.</li> <li>No actual copy is used, just lines to represent text.</li> <li>Descriptions for content and functionality (as needed) are included directly on (or near) the elements.<br />  </li> </ul> <h3>Medium Fidelity Wireframe</h3> <ul> <li>Shows the content framework, layout structure, and hierarchy of key elements using basic lines, shapes, and boxes to represent images, icons, etc.</li> <li>Copy inserted where available, otherwise lorem ipsum is used as a placeholder.</li> <li>Presented in shades of grey with no styles or graphics applied.</li> <li>Functions have labels.</li> <li>Descriptions for content and functionality provided in annotations.<br />  </li> </ul> <h3>High Fidelity Wireframe</h3> <ul> <li>More details are included for each component along with additional views for features like modal windows or dropdown filters.</li> <li>May include specific typeface choices to begin to show hierarchy.</li> <li>Spacing between elements is further refined.</li> <li>Determinations between image vs. illustrations may be eluded to.</li> <li>Remains without color.<br />  </li> </ul> <h2>Why Annotations are Important</h2> <p>So you’ve just created a beautiful set of wireframes, had a great client presentation, and they’ve approved them. Great job! But that’s only part of it. Just because you’re ready to share the wireframes with the developers so they can begin their technical discovery, it doesn’t mean they have the same shared understanding about them as you and your client. Often times in an Agile development process, not everyone involved is present for every meeting during the discovery process due to the pace of the project and/or budget. Even when everyone is present, we don’t want to make them rely on sheer memory alone for how each component is going to be built or how it will function. That’s where the ever-important Annotations come in. By providing fully annotated wireframes to both developers and your client will help to keep everyone on the same page for what to expect at launch.<br />  </p> <h3>The Art of Annotating</h3> <p>Once those medium or high fidelity wireframes have been created, it’s time to add the important information so we can ensure everyone has a clear understanding of the functionality that is expected for each component. The most important thing to remember when annotating your work is that it should speak for you when you’re not there.<br />  </p> <h4>Where Should The Annotations Go?</h4> <p>Typically, annotations are placed on the side or the bottom of a wireframe in a numbered list of descriptions with corresponding numbers next to the actual element on the wireframe. The language is kept brief in order to include as much information as possible within a limited physical space. It’s helpful to use color combinations that stand out from the wireframe to avoid confusion between elements. And when you have multiple audiences you need to address, it’s helpful to tailor your annotations by creating different sets for each.<br />  </p> <h4>Who Are The Annotations For?</h4> <p>Not that you need to include them all, but there are typically up to 5 different audiences who have different needs but may benefit from wireframe annotations:</p> <p style="margin-left: 40px;"><strong>The Client</strong> wants to understand how each element incorporates their business goals. When designing for Drupal, annotations are also the perfect place to highlight when certain components will be manually curated or fed automatically to ensure the expected maintenance after launch is clear.</p> <p style="margin-left: 40px;"><strong>The Front-End Developer </strong>wants to see where the images and icons are placed, what size and aspect ratio they are, defined page margins, amount of padding between elements, and the functionality for all interactive components.</p> <p style="margin-left: 40px;"><strong>The Back-End Developer </strong>can benefit from notes on image sizes, functionality for interactive components, manually curated elements vs. automatic feeds. They can also incorporate helpful tips for the content author with specific direction.</p> <p style="margin-left: 40px;"><strong>The Copywriter </strong>can write more freely if you’re able to provide recommended character counts for each section within the component: Title, subtitle, descriptive text areas, etc. Notes for optional elements will also improve the quality of the final copy. And when content will be auto-fed, note it so they can move on!</p> <p style="margin-left: 40px;"><strong>The Designer </strong>for those instances where wireframes and designs are handled by different people, it’s helpful to include design direction or live links to reference examples. You’ve been involved in conversations with the client during wireframe development and understand their vision. This is the opportunity to communicate that information.<br />  </p> <h4>What Information Should The Annotations Include?</h4> <p>Don’t think you’re being helpful if you annotate everything, without a cause. The last thing you want as an end result is a wireframe that’s so overloaded with annotations it looks like the plans for the next spaceship launch. It can actually be more confusing if too many notes are present. Smart wireframe design can alleviate the need for certain descriptive annotations when you include the descriptions within the titles of the element itself:</p> <ul> <li>The title ‘Logo’ or ‘Icon’ sits inside of the circle.</li> <li>The Button title reads ‘Optional, Editable Button’.</li> <li>Required form fields have a red asterisk.</li> <li>The opening ‘lorem ipsum’ descriptive copy instead starts with “This is an introductory paragraph that talks about scientific discoveries”.</li> </ul> <p>What<em> should</em> you annotate?</p> <ul> <li>Anything that is not obvious just by looking at the wireframe.</li> <li>Conditional items: when and how to display them.</li> <li>Cross-device differences. An example would be when an image may display on desktop but not on mobile. Or when an image may be replaced with one of a different aspect ratio on mobile, etc.</li> <li>Logical or technical constraints: maximum image size, longest possible password field length, etc.</li> <li>Any hidden details: content behind additional tabs, items in a drop-down menu, etc.</li> <li>Functional items: links, buttons: expected behavior when the user clicks. This also includes how filters and form fields should respond.</li> </ul> <p>Here are a few common areas of interaction states, feedback, and gestures that benefit from detailed annotations:</p> <h5>Dropdown Lists</h5> <p>Include the expanded states of the drop down menus on a separate page with annotations.</p> <h5>Dynamic Content</h5> <p>Explanations for things like search results listings, news content that will auto feed, image or video galleries, pagination.</p> <h5>File Uploads and Downloads</h5> <p>Provide interactions for the file upload. This may include things like file upload dialog, file upload progress bar, file upload completion notice.</p> <h5>Messages and Modals</h5> <p>Interactive feedback for form validation, confirmation, warnings, alerts, failed actions, errors, etc.</p> <h5>Numbers</h5> <p>Account for the longest number of digits that will be needed for any confined spaces. Example: Should it display as 100,000,000 or 100M ?</p> <h5>Titles and Labels</h5> <p>Account for the longest names potentially possible. Provide solutions for cases when the lines should not break: ie, within tables, accordions, filters, etc.</p> <h5>Tooltips</h5> <p>Provide visual reference and implied behavior for tooltips and try to account for the maximum characters that will be needed.</p> <h5>Gestures</h5> <p>Especially when annotating mobile wireframes, your intentions will not be lost if you add directional notes for specific gestures, such as:</p> <ul> <li>Single-click (or tap)</li> <li>Double-click (or tap)</li> <li>Right-click (or tap)</li> <li>Hover (provide mobile alternative)</li> <li>Swipe</li> <li>Pinch &amp; spread</li> <li>Drag &amp; Drop</li> <li>Default link for phone, email, map</li> <li>External web links<br />  </li> </ul> <h2>Wrap it Up</h2> <p>Fully defining the wireframe process at the beginning of the project will clarify expectations for the client. Wrapping those completed wireframes in an annotated package will help to keep everyone involved working towards the same goals, and avoid disputes, disappointments, and costly reworks down the line.</p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/who-we-are/team/cheryl-little" typeof="schema:Person" property="schema:name" datatype="">Cheryl Little</span></span> <span class="field field--name-created field--type-created field--label-hidden">Mon, 12/04/2017 - 10:34</span> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/tags/ux" hreflang="en">UX</a></div> <div class="field__item"><a href="/tags/wireframes" hreflang="en">wireframes</a></div> <div class="field__item"><a href="/tags/documentation" hreflang="en">Documentation</a></div> <div class="field__item"><a href="/tags/best-practices" hreflang="en">Best Practices</a></div> <div class="field__item"><a href="/tags/drupal" hreflang="en">Drupal</a></div> </div> </div> <div class="field field--name-field-related-content field--type-entity-reference field--label-above"> <div class="field__label">Related Content</div> <div class="field__items"> <div class="field__item"><a href="/videos/designer-developer-how-go-paper-styleguide-and-still-remain-friends" hreflang="en">How Designers and Developers Can Collaborate + Stay Friends</a></div> <div class="field__item"><a href="/blog/love-user-experience-design" hreflang="en">For the LOVE of User Experience Design</a></div> </div> </div> <div class="gatsby-iframe-container"><iframe class="gatsby-iframe" src="https://preview-misriptide.gtsb.io/blog/annotate-communicate"></iframe></div> Mon, 04 Dec 2017 15:34:05 +0000 Cheryl Little 3149 at https://publish.mediacurrent.com Dynamic Email Submissions for Webforms in Drupal 8 https://publish.mediacurrent.com/blog/dynamic-email-submissions-webforms-drupal-8 <span class="field field--name-title field--type-string field--label-hidden">Dynamic Email Submissions for Webforms in Drupal 8</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Webforms in Drupal make for an easy way to get user submitted data.  There are a handful of ways you can organize that data.  You can even have the form submission data be sent to an email address.  In some cases, you may want to have that data be sent to a different email address based on submitted data or a custom setting.  Here we will go over one solution for getting webforms to submit submission data over email dynamically.</p> <p>In this case, we'll start by setting up new webform and content type.<br />  </p> <h2>Setup the webform fields:</h2> <ol> <li>Create a new webform</li> <li>Add the desired fields to the webform</li> <li>Add a hidden field (we'll call this "Email Override" or "field_email_override")<br />  </li> </ol> <h2>Set up conditional email handlers on the webform:</h2> <ol> <li>Go over to the "Email/Handlers" tab and add a new Email</li> <li>Set the "To email" to a default value</li> <li>Go to the Conditions tab for this Email</li> <li>Set the "State" to "Enabled"</li> <li>Set the "Element" to "All"</li> <li>Add a "Trigger/Value"</li> <li>Select the "Email Override" field we created earlier and select the value as "Empty"</li> <li>Add a new "Email" in "Email/Handlers" tab</li> <li>Set the "To email" to the "Email Override" field in the select list</li> <li>Follow steps 4-6 for this Email setting</li> <li>Then select the "Email Override" field we created earlier and select the value as "Filled"<br />  </li> </ol> <h2>Set up the content type fields:</h2> <ol> <li>Create a new content type</li> <li>Add a webform embed field and set the default value to the newly created form</li> <li>Add another textfield (we'll call this "Email Submissions To" or "field_email_submissions_to")</li> </ol> <p>Now that our configuration is all set up, we can get to the code snippets that will actually drive the dynamic email submissions.</p> <p>First we want to set up a <strong>hook_form_alter() implementation</strong> to get and check the email submissions to field value.  In a custom module do this:</p> <pre> <code class="language-php">/** * Implements hook_form_alter(). */ function my_module_form_alter(&amp;$form, FormStateInterface &amp;$form_state, $form_id) { // Use regex to make sure we are using the correct form. if (preg_match('/webform_submission_my_webform_node_/', $form_id)) { // Get the node for the page the webform is on. $node = \Drupal::routeMatch()-&gt;getParameter('node'); // Check that this node is valid. if ($node instanceof \Drupal\node\NodeInterface) { // Get the value of the email submissions to field. $email_override = $node-&gt;get('field_email_submissions_to')-&gt;getValue(); // Check that the value exists. if (!empty($email_override)) { // Form values for webform can not be set in hook_form_alter(), so pass to a validation function. $form['actions']['submit']['#validate'][] = 'my_module_email_override'; } } } }</code></pre><p> <!-- HTML generated using hilite.me --></p> <p>Now that code is setup to get and check the email submissions to field value, we need to process that value and pass it to the webform using the hidden field we created in the beginning.</p> <pre> <code class="language-php">/** * Changes the TO email value depending on the parent node's email submission * field value. * * @param array $form * Form array. * @param \Drupal\Core\Form\FormStateInterface $form_state * From state from the form. */ function my_module_email_override($form, FormStateInterface $form_state) { // Get the node for the page the webform is on. $node = \Drupal::routeMatch()-&gt;getParameter('node'); // Check that this node is valid. if ($node instanceof \Drupal\node\NodeInterface) { // Get the value of the email submissions to field. $email_override = $node-&gt;get('field_email_submissions_to')-&gt;getValue(); // Check that the value exists. if (!empty($email_override)) { // Set the value of email submissions to field to the email override field on the webform. $form_state-&gt;setValue('email_override', array_shift($email_override)['value']); } } }</code></pre><p> <!-- HTML generated using hilite.me --></p> <p> With this, you should now be able to give your webforms the ability to dynamically set submission emails receiving address.  This could be extended even further using taxonomy fields or select lists to get the email address.  If you have any suggestions or other ways to accomplish this, please feel free to comment below.</p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/who-we-are/team/chris-runo" typeof="schema:Person" property="schema:name" datatype="">Chris Runo</span></span> <span class="field field--name-created field--type-created field--label-hidden">Thu, 11/30/2017 - 15:14</span> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/tags/webform" hreflang="en">Webform</a></div> <div class="field__item"><a href="/tags/drupal-8" hreflang="en">Drupal 8</a></div> <div class="field__item"><a href="/tags/best-practices" hreflang="en">Best Practices</a></div> <div class="field__item"><a href="/tags/forms" hreflang="en">Forms</a></div> </div> </div> <div class="gatsby-iframe-container"><iframe class="gatsby-iframe" src="https://preview-misriptide.gtsb.io/blog/dynamic-email-submissions-webforms-drupal-8"></iframe></div> Thu, 30 Nov 2017 20:14:17 +0000 Chris Runo 3147 at https://publish.mediacurrent.com Scheduling Content Changes in Drupal 8 https://publish.mediacurrent.com/blog/scheduling-content-changes-drupal-8 <span class="field field--name-title field--type-string field--label-hidden">Scheduling Content Changes in Drupal 8</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Looking to schedule content for your Drupal 8 site? With Drupal 7, there are a few options available such as the <a href="https://www.drupal.org/project/scheduler">Scheduler</a> module or a custom-built solution. One of the main issues with Scheduler module is that it’s not very flexible, meaning the only scheduled operations that could be performed are to either publish or unpublish a node.</p> <p>In Drupal 8, Scheduler module is still around, although still limited to only publish or unpublish operations. Of course, there is always the option to custom build a solution, but I’ve recently come across an even better alternative that provides a flexible way to schedule content changes. The Acquia-funded contributed module is called Scheduled Updates. In a nutshell, it allows you to perform scheduled operations on essentially any entity field values at a specific date/time. Another nice feature is that it allows you to configure multiple updates, such as publish a node at a specific date/time and then unpublish it at a later date/time.</p> <p><strong>To install and configure the module, follow the following steps:</strong><br />  </p> <h2>Step 1: Download, install and enable</h2> <p>Download, install, and enable the Scheduled Updates module.</p> <p><a href="https://www.drupal.org/project/scheduled_updates">https://www.drupal.org/project/scheduled_updates</a></p> <p>In a Drupal 8 composer workflow, the module should be added to your site’s composer.json and installed during the `composer install`.</p> <p>The module can be enabled via Drush, such as `drush en scheduled_updates -y` or via the module list page.<br />  </p> <h2>Step 2: Configure Scheduled Updates module</h2> <p>Visit the configuration page under Configuration → Workflow.</p> <p>For this example, we will be configuring a scheduled job to automatically set an Article node to `promoted` at a specific date/time. This will demonstrate a popular use case that is possible by this module.</p> <ul> <li>Click on Scheduled Update Types</li> <li>Click on Add Scheduled update type</li> <li>Give it a label of “Article scheduled promote”<br /> <img alt="Article Schedule Promote Label" class="media-element file-default" data-delta="1" data-entity-type="" data-entity-uuid="" src="https://publish.mediacurrent.com/sites/default/files/nj54atz1smjx7ok89paut7mxmhlfjwim-hddzsbc_ou3h5e0hubxhix3ph729ozulie9ef5z2nit3yjlx2orqo8zklli2jvb1ex5vxdujjsjvrln1pcxowpzyxk6zk17hz5q_a5w_0.png" title="Article Schedule Promote Label" typeof="foaf:Image" /></li> <li>Choose `Entity Type` of `Content`<br /> <img alt="Entity Type of Content" class="media-element file-default" data-delta="2" data-entity-type="" data-entity-uuid="" src="https://publish.mediacurrent.com/sites/default/files/hbmfdqf6r6dxgenbyvqtwiaouaojrjmgdb94fo1c93ycxkr7au-zt1wme3elzocrxkuki1znskimap5pdry6jz-rjzbgi960bkymooi5vbxbmxxknwvft6tct6lpjr3sxfonw4eq_0.png" title="Entity Type of Content" typeof="foaf:Image" /></li> <li>Set `Update Field` to be `Promoted to front page`<br /> <img alt="Promoted to front page" class="media-element file-default" data-delta="3" data-entity-type="" data-entity-uuid="" src="https://publish.mediacurrent.com/sites/default/files/xdvizid-wmnvmho6cdjjgkaezxtel-vuh61nogcdoryet7pxcdf1gzevwtloph3njraqeljawzwnq3ijthr6z7kndn9h9vnxfq_vd4dtc8mv3xmllrbuk7h0ka2jrechoukkop82_0.png" title="Promoted to front page" typeof="foaf:Image" /></li> <li>For `Default Value and Date Only Updates”, check the box for `Promoted to front page`. (This tells Drupal that when the scheduled update runs, that it should give the Article node a Promoted status). If we wanted, for instance, to unpromote an Article node, we would uncheck the box for “Promoted to front page”. Also, check the box for `Hide this field for a date only update.</li> <li>In the Update Reference Options, choose the entity bundle that will be affected by this configuration. We will just check Article.<br /> <img alt="Update Reference Option" class="media-element file-default" data-delta="5" data-entity-type="" data-entity-uuid="" src="https://publish.mediacurrent.com/sites/default/files/g6ibynzq2oa0-psk22agpghlqn-myuha1vgx6_t4jjfnoi_j8biti2m2xhjjq3fhpldkp4nw3j23_tjdezl8-mdonybpjmyqmd0zodzvexltd5qwzwh-z3pkjub52uleouh2ozg9_0.png" title="Update Reference Option" typeof="foaf:Image" /></li> <li>Under `Reference Field Options`, choose `Create new reference fields to enter updates.`.<br /> <img alt="Reference Field Options" class="media-element file-default" data-delta="6" data-entity-type="" data-entity-uuid="" src="https://publish.mediacurrent.com/sites/default/files/dtynhorfalvbmsxeyhc3rbkheh_khlf7fb1rb2w9kfpe1l_htofmwqkfgygnhil571ukflxzpooobreuy_vqlzlufsynrgentpd6wgpmgbgfdc7yta8tm8bbendvj0l5arwms8fo.png" title="Reference Field Options" typeof="foaf:Image" /></li> <li>Add a label for the field that will be added to the node, such as `Promote on`.<br /> <img alt="Make Label Promote On" class="media-element file-default" data-delta="7" data-entity-type="" data-entity-uuid="" src="https://publish.mediacurrent.com/sites/default/files/yggyqdj1ad5orf-e9gqnifpochnppqhg2v10lttuczty4ycugp8dyh_c1njunqlqzn4jlp3-tfgtzsxetcgsxqrylrplxawixnznuaxadeka22_oq72yc_5szibpc0xr0hk25nju.png" title="Make Label Promote On" typeof="foaf:Image" /></li> <li>The `Update Limit` can stay at the default</li> <li>Select an option for `Update Runner`. In most cases, `Latest Revision` is the best option.<br /> <img alt="Update Runner Settings" class="media-element file-default" data-delta="9" data-entity-type="" data-entity-uuid="" src="https://publish.mediacurrent.com/sites/default/files/u_bwuknfwl73y4wiqz55rdxghw1fb1nbslbv0segjj8klnkkifkctyptq5kgmgolok8jcg_rzwwm4sm9cdyvwf8p3qxyx8mlnnvpnu6ndikyrasd18naj5ai3g4wglwu-ep9exxc.png" title="Update Runner Settings" typeof="foaf:Image" /></li> <li>Click Save.</li> </ul> <h2>Step 3: Manage Fields</h2> <p>If we go to the Article `Manage Fields` page, we can see a new field was created.<br /> <img alt="Manage Fields in Scheduler" class="media-element file-default" data-delta="10" data-entity-type="" data-entity-uuid="" src="https://publish.mediacurrent.com/sites/default/files/xyivcpcrh_y82khokf7ck8wvhzbcwebg8cp38fh5y9g7dgnq7igvisjllynw6t484qjv_1ag3m6apqoaec-55vcrutioydubendndg-gq2bj0fwaec14j2wzng8f65te1sjdswxq.png" title="Manage Fields in Scheduler" typeof="foaf:Image" /><br />  </p> <h2>Step 4: Manage Form Display</h2> <p>If we go over to the Article `Manage Form Display` page, there are a few options, but for this tutorial, we can leave them unchanged.<br />  </p> <h2>Step 5: Create scheduled content</h2> <p>Now, we can create a new Article node and see the Scheduled Updates in action.</p> <ul> <li>Click the “Add new Promote on” button</li> <li>Enter a date and time when we want the node set to `Promoted to front page`.</li> <li>Note, with most browsers, there is a really nice date picker for date/time selection.<br /> <img alt="Date/Time Selection" class="media-element file-default" data-delta="12" data-entity-type="" data-entity-uuid="" src="https://publish.mediacurrent.com/sites/default/files/ughoijpic3dmimtk0hi413ver_p0bttyjoalwtdlzfa7covbwteqvpuh6etp1me8nkliptmdgpzxjrbygglnip7tpp0psll7ythbwgzcofeg_s7v-f0fzgpsesjqrxitpu-k69sl.png" title="Date/Time Selection" typeof="foaf:Image" /><br /> <img alt="Date/Time Selection" class="media-element file-default" data-delta="13" data-entity-type="" data-entity-uuid="" src="https://publish.mediacurrent.com/sites/default/files/npahxpusojdcd4nb6wyubwovmmp1i3e69e_l_gnndzkxd8j68abhp06yaxk010jgo_b-6ocrfhbm_q4ccqtaqr8k95ehzzwimphxeel9ln2fg1dbulsuu3b3mmxeue52euzzi5uu.png" title="Date/Time Selection" typeof="foaf:Image" /></li> <li>Click “Create Promote on”.<br /> <img alt="Create Promote On" class="media-element file-default" data-delta="14" data-entity-type="" data-entity-uuid="" src="https://publish.mediacurrent.com/sites/default/files/d2hko5eegg8dk2gk45e5rn9wjusvum-bcp17ny0lqzhp470clg6lwoayvcjedjq1hpliq4mvxjvzyh_grsggxysqctef5dqhdkugtby4ro_begwcnykh6p9qng5vojavykvplahg.png" title="Create Promote On" typeof="foaf:Image" /></li> </ul> <p>Now that the scheduled update has been created, save the node.<br /> It will be set to the `promoted` status once the scheduled update job runs during the next cron run.<br /> <img alt="promoted status" class="media-element file-default" data-delta="15" data-entity-type="" data-entity-uuid="" src="https://publish.mediacurrent.com/sites/default/files/o8e7c0syu-kktmutzxoc4oqebinikdeir940ushsnofoy2vpiq4qjcx0xnp-yvfbxzzmrecgszcgmwxnhdpntyyauhomhzya4d7leeqi4ikpeiqdxhqjccdzfk3u0hdc87xwww6.png" title="promoted status" typeof="foaf:Image" /></p> <h2> Step 6: Perform scheduled content updates during cron run</h2> <p>The next time cron runs, we will get this message:<br /> <img alt="Cron run success message" class="media-element file-default" data-delta="16" data-entity-type="" data-entity-uuid="" src="https://publish.mediacurrent.com/sites/default/files/bj8d8mtl-9g-90_f1x2t3rbe3ge841bfj74ftchbdcelgtkb7vnql0-spcl3xtyy6u1pkd0evrxqz8vphrdqwd939yykdhwzvmxri1_kvqqfp1gpoenhwgkwdybw7p_73nsrmijv.png" title="Cron run success message" typeof="foaf:Image" /></p> <p>We can also see that the node is now set to the Promoted status on the node edit page.</p> <p>Known issues:</p> <p>Drupal is not guaranteed to run cron. Assuming Drupal has cron set to run every 3 hours, at the specified interval, such as 3 hours, cron will run cron every 3 hours if pages are being hit on your site, meaning if your site is getting enough traffic to get the pages hit that often.</p> <p>To work around this limitation, and to make sure Scheduled Updates (or Scheduler for that matter) works properly, cron can be set on the server, assuming the server allows that sort of access. Depending on the timing and frequency of your updates, that will decide what cron setting you should configure on the server.</p> <p><a href="https://www.drupal.org/docs/7/setting-up-cron-for-drupal/configuring-cron-jobs-using-the-cron-command">https://www.drupal.org/docs/7/setting-up-cron-for-drupal/configuring-cron-jobs-using-the-cron-command</a></p> <p>For example, if you create scheduled content on 30-minute increments (one at 12:30 PM, two at 3:00 PM, three at 4:30 PM), you’ll most likely want to have the server automatically run cron every 30 minutes to be sure that cron is run at the right time to kick off the scheduled update.</p> <h2>Resources:</h2> <p>You can find further information at these resources:</p> <p><a href="https://dev.acquia.com/blog/drupal-8-module-of-the-week-scheduled-updates/28/01/2016/9621">https://dev.acquia.com/blog/drupal-8-module-of-the-week-scheduled-updates/28/01/2016/9621</a><br />  </p> <p>In closing, I hope this blog post demonstrated the benefits of the Scheduled Updates module, such as it’s flexibility with entity field operations, robustness in adding multiple scheduled updates on a single node, and the ease of configuration and user experience.</p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/about/our-team/mediacurrent-team" lang="" about="/about/our-team/mediacurrent-team" typeof="schema:Person" property="schema:name" datatype="" class="username">Mediacurrent Team</a></span> <span class="field field--name-created field--type-created field--label-hidden">Wed, 06/21/2017 - 08:33</span> <div class="field field--name-field-image-ref field--type-entity-reference field--label-above"> <div class="field__label">Main Image</div> <div class="field__item"><a href="/media/2977" hreflang="en">scheduling_content_changes.jpg</a></div> </div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/tags/drupal-8" hreflang="en">Drupal 8</a></div> <div class="field__item"><a href="/tags/scheduler" hreflang="en">Scheduler</a></div> <div class="field__item"><a href="/tags/content" hreflang="en">Content</a></div> <div class="field__item"><a href="/tags/best-practices" hreflang="en">Best Practices</a></div> </div> </div> <div class="field field--name-field-related-content field--type-entity-reference field--label-above"> <div class="field__label">Related Content</div> <div class="field__items"> <div class="field__item"><a href="/blog/how-think-about-drupal-8" hreflang="en">How to Think About Drupal 8</a></div> <div class="field__item"><a href="/blog/drupal-8-entity-cms" hreflang="en">Drupal 8 - The Entity CMS</a></div> <div class="field__item"><a href="/blog/deep-dive-translating-paragraphs" hreflang="en">Deep Dive Into Translating Paragraphs</a></div> </div> </div> <div class="gatsby-iframe-container"><iframe class="gatsby-iframe" src="https://preview-misriptide.gtsb.io/blog/scheduling-content-changes-drupal-8"></iframe></div> Wed, 21 Jun 2017 12:33:25 +0000 Mediacurrent Team 2976 at https://publish.mediacurrent.com Just Ask: Promoting A Culture of Asking Questions https://publish.mediacurrent.com/blog/just-ask-promoting-culture-asking-questions <span class="field field--name-title field--type-string field--label-hidden">Just Ask: Promoting A Culture of Asking Questions</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>I don't remember how the topic came up when my wife and I were visiting with my parents last year, but for some reason, I asked if either of them liked the liver that my mom prepared every so often when I was growing up. As it turns out, neither of them did! I always thought that my dad liked it, and that was why we had it. If I had only asked a simple question back then…</p> <p>As a developer, I'm sure I've managed to burn many hours over the years trying to figure out any number of sticky technical problems which, if I had just asked, someone could have helped me with. Perhaps I waited too long before I finally asked for help - or maybe I soldiered on until I found the answer all by myself.  The trouble is, between <a href="https://events.drupal.org/neworleans2016/sessions/overcoming-imposter-syndrome">Impostor Syndrome</a> and an <a href="http://www.creativityland.ca/why-people-dont-ask-questions/">apparent social taboo against asking questions</a> (not to mention ego), the pressure <em>against</em> asking questions can be enormous.  One can easily drop into one or more of the following mindsets: “if I ask <em>that</em> question, I’ll look stupid,” or “they will find out that I really don’t know <em>XYZ</em> that well if I ask that question,” or “I figured this out once before - I can figure it out again!”</p> <p>So how does a company - or an individual - foster an environment which promotes asking questions?<br /> </p> <h2>Make a Statement</h2> <p>For a company as a whole, I believe that management should state that "asking questions is a good thing" - be on the record with that message and state it often.  During new hire orientation at Mediacurrent, this point is made both in the context of working through technical challenges during development, as well as when interacting with clients.  (Concerning the latter, see Jeff’s excellent post, <a href="https://www.mediacurrent.com/blog/one-word-save-your-project">One Word to Save Your Project</a>.)<br /> </p> <h2>Model a Culture of Asking Questions</h2> <p>Beyond stating that asking questions is not only OK but desirable, asking questions needs to be modeled by both management as well as the technical leadership - this reinforces that statement through leading by example. Here at Mediacurrent, the culture is very "pro" asking questions. I've seen everyone from the founding partners through every level of personnel ask questions.  The most likely way to see this cultural emphasis play out at Mediacurrent is in our help channel in Slack.  Of course, we also have specific client channels, as well as front-and back-end developer channels, and so on, where you’ll see questions specific to a particular project or domain. But on any given day, one might see questions in the help channel about hardware problems, Mediacurrent processes or procedures, apps or tools, etc.  Having such a channel is a great way for our mostly distributed team to both get the help they need when they need it and for this important concept to be modeled.<br /> </p> <h2>Repeat, Repeat, Repeat</h2> <p>For everyone to be very comfortable asking questions, it really helps to see the behavior frequently modeled at all levels of the company. Many times!<br /> </p> <h2>The Result</h2> <p>For us, this has resulted in a stronger culture within Mediacurrent, a culture where collaboration and helpfulness are the rule, rather than internal competition.</p> <p>If you also find yourself lucky enough to be part of a team where asking questions is encouraged and frequently modeled, then don't hesitate: just ask!<br /> </p> <p>Every so often, asking a question can lead to an unexpected insight or benefit for the larger group.  For example, as a young recruit at the Los Alamos Laboratory in 1943 (just one year after he had earned his Ph.D.), Richard Feynman found himself tasked with traveling to the Oak Ridge, Tennessee, uranium enrichment facility so he could go over the design of the plant.  Why did he need to review the design?  To make sure the facility was not going to <em>blow up</em> due to processing the uranium in an unsafe manner.  During his second trip to Oak Ridge, Feynman was presented with a refined design based on the information he gave them during his first trip.  His hosts laid out the blueprints for the facility for him to review - but he didn’t know what all the symbols on the blueprints meant!  After internally debating what to do for a few minutes, he decided to take a stab in the dark and ask a question:</p> <blockquote><p>I take my finger and I put it down on one of the mysterious little crosses in the middle of one of the blueprints on page three, and I say "What happens if this valve gets stuck?" -- figuring they're going to say "That's not a valve, sir, that's a window."</p> </blockquote> <p style="margin-left: 40px;">- Richard Feynman, <em><a href="https://www.amazon.com/Surely-Feynman-Adventures-Curious-Character/dp/0393316041">Surely You’re Joking, Mr. Feynman</a></em></p> <p>Even though he had guessed at the meaning of the blueprint symbol, it turns out that Feynman had indeed identified a valve - a valve which, if it had gotten stuck, would have caused significant problems! It was back to the drawing board for the design, and a great example for the rest of us on the value of asking questions. <br /> </p> <p><strong>Additional Resources </strong><br /><a href="https://www.mediacurrent.com/blog/celebrating-last-10-years-and-looking-ahead">Cheers to 10 Years! Mediacurrent’s 2016 Retrospective</a> | Blog<br /><a href="https://www.mediacurrent.com/blog/best-and-worst-question-drupal-sales-presentation">The Best (and Worst) Question in a Drupal Sales Presentation</a> | Blog<br /><a href="https://www.mediacurrent.com/blog/establishing-remote-workflow">Establishing a Remote Workflow </a>| Blog </p> <p> </p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/who-we-are/our-team/lee-nakamura" typeof="schema:Person" property="schema:name" datatype="">Lee Nakamura</span></span> <span class="field field--name-created field--type-created field--label-hidden">Tue, 01/31/2017 - 14:24</span> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/tags/company-culture" hreflang="en">Company Culture</a></div> <div class="field__item"><a href="/tags/best-practices" hreflang="en">Best Practices</a></div> </div> </div> <div class="gatsby-iframe-container"><iframe class="gatsby-iframe" src="https://preview-misriptide.gtsb.io/blog/just-ask-promoting-culture-asking-questions"></iframe></div> Tue, 31 Jan 2017 19:24:46 +0000 Lee Nakamura 2838 at https://publish.mediacurrent.com