Drupal

Image Auto Tagging

New Drupal Modules - 2 July 2018 - 6:01am
Categories: Drupal

OpenSense Labs: Integrating Digital Asset Management with Drupal

Planet Drupal - 2 July 2018 - 5:51am
Integrating Digital Asset Management with Drupal Shankar Mon, 07/02/2018 - 18:21

Governance plays a pivotal role in the business workflow and is significant for the smooth functioning of an organisation which is expanding at a steadfast pace. In this digitised world of organised chaos, demand for agile marketing has resulted in the accretion of digital assets to such an extent that some of them seem superfluous. Digital Asset Management (DAM) and Drupal can come together to smartly strategise the way enterprises handle unimportant assets.

Drupal governs the content on the website whereas Digital Asset Management manages creation, assessment and approval of digital assets.

A superabundance of assets clog up our devices and blot out the productivity. Digital Asset Management can help enterprises in eclipsing outmoded asset management processes and take back control of their digital files. Therefore, it helps in optimising content processes and makes life much easier.

Decoding the Digital Asset Management

What is involved in digital asset management? DAM is a content management and branding automation system which uses the centralised mode of storing and governing voluminous digital files. It accredits enterprises to connect, control, and centralise both the local and the global access to digital files thereby ensuring that digital assets are accessible to everyone whenever they have the dire need of them.

Source: Cognizant

Grid, The Guardian’s image management system, is a very good example of an open source digital asset management system. Its team used pragmatic agile processes to build it quickly. It is now incorporated with its print workflow and is used for almost half of the images used in their digital content.


Does it ring a bell? Definitely! Content Management System (CMS) like Drupal also has its foundation in the provision of a centralised mode of content dissemination. So what’s the difference between CMS and DAM?

Difference between DAM and CMS

Content Management System and Digital Asset Management are two systems that work brilliantly with the digital content but are designed for different tasks.

Digital Asset Management Content Management System

Central repository for handling digital assets

The central system for governing content on the website

Example: Acquia DAM

Example: Drupal

In general, Content Management System, for example, Drupal, is the entire foundation for governing content on the website. The term ‘content’ means anything that is displayed on your site and not just blog posts which are managed by CMS.

In contrast, a Digital Asset Management manages more than just your website. It powers the entire sales and marketing organisation. It acts as the central repository for the approved assets. Moreover, it is the collaborative workflow engine between marketers and designers for the creation, assessment, and approval of those assets.

A Plethora of Benefits

With a superabundance of benefits, Digital Asset Management enhances productivity, improves brand consistency and boosts team collaboration.

Source: Webdam
  • Cuts business costs: It can improve your ROI through quicker creation, retrieval, and dissemination of company content. Do-it-yourself design templates for business cards, banner ads etc. cut both internal and external admin, design, and production costs.
     
  • Security: It provides collective security measures built around your data’s needs and adheres to strict digital rights management (DRM) guidelines. For instance, be it navigating outmoded sharing methods, or supporting teams to establish effective user access permissions, it maps the usage rights vis-à-vis your digital assets. Internal management of brand’s corporate identity: By paving the way for corporate identity guidelines and numerous on-brand digital assets, it offers secure global access to approve useable content.
     
  • Integration scope: It seamlessly integrates with your existing infrastructure. It helps you in improving project management, delegating resources and roles, optimising and targeting assets, and identifying top-performing content by working with CMS, customer relationship management (CRM) and several other marketing, sales and IT solutions.
     
  • Efficient file management: It eliminates the need to find and deliver assets via multiple locations thereby removing any costly errors and inefficiencies incurred through clumsy file management.
     
  • Time-Saving: It provides 24X7 access to company collateral from anywhere. Thus, it removes the need for time-intensive file searches and avoids the need for recreating missing assets.
Choosing the Best Digital Asset Management for your Business

So, how to strategise in order to choose the best Digital Asset Management? It is important that you understand your prerequisites before making the decision of selecting a Digital Asset Management. 

Understanding DAM capabilities

 

  • Repository: One of the first things that you need to consider is a core digital asset repository. A centralised asset repository should on the top of the priority list for efficacy in controlling and governing the assets.
     
  • Creation: Through workflow and collaboration tools,  can help with the creation of assets. If you have multiple departments or have agencies working together to create digital assets, it can make the process of creation of assets faster and makes its easier to assess and approve them. It also ensures that everyone uses the same transparent process. Workflow management tools pre-defines stages and roles so that you can know the status of every asset and their requirements instantly.
     
  • Consumption: It depends on people and systems to determine how these assets are being used. Your Digital Asset Management should be able to provide a way for employees to search for and download assets on their own.

Understanding your Goals

 

  • It should simplify the production of digital assets.
  • It should improve the quality, consistency, and on-brand of assets being created especially in the enterprises with global digital marketing teams.
     
  • It should be able to allow the organisation to keep a record of all the assets without leaving a question mark on where to add them or their approval status.
     
  • It should alleviate manual requests that are being made by the marketing team to provide specific files to several people and groups like logos, product images, campaign assets, sales collateral etc.
     
  • It must master your brand consistency.
     
  • It should decrease the time taken to integrate assets into digital marketing campaigns and user experiences.
Understanding your Users
  • Develop a list of stakeholders, people in your organisation, and even outside of your organisation who will be interacting with Digital Asset Management.
     
  • Stakeholders include digital marketers, designers, sales, partners, IT etc.
     
  • Understand what their access and roles are with the Digital Asset Management.
Understanding your Requirements
  • Get the feedback from each of your stakeholder groups. Know what are their most common challenges and build a list of requirements. Make sure to understand the use cases so that you can prioritise those requirements.
     
  • Digital Asset Management systems have the capability to fulfill the need of basic requirements of small teams to extremely intricate ones for sophisticated large teams. 

Keep a note of typical requirements of organisations utilising Digital Asset Management as mentioned in the tabular column below.

Requirement Description

Asset Approval

Processes required to create a new asset should be well managed

Asset Review

A collaborative asset review cycle for the people to add comments, markups, and feedback to asset proofs

Asset Access (Internal)

A portal for employees to search and download assets. Access control by region or department would be required

Asset Access (External)

A controlled asset access for the external users paving the way for secure sharing of assets with partners, contractors, agencies etc.

Branding guidelines

A self-serve access point to get the approved branding guidelines like product images, logos, color palettes etc.

Structured assets

Assets should be placed in the folders

Keywords/Tags

Assets should be assigned with keywords and tags

Customer fields

Custom metadata fields should be assigned to assets

Reports

There must be reporting and assessment on asset usage

Direct access for marketing system

There must be provision for utilising approved assets for creating web banners, blog posts, email marketing campaigns etc. directly from the Digital Asset Management

Understanding your Deployment Options

Deployment options for Digital Asset Management constitute on-premise, private cloud, and Software-as-as-Service (SaaS). To understand what works best for your business needs, let’s look at the merits and demerits of these deployment options.

On-Premise Private Cloud SaaS Merit
  • Flexibility in integration
  • Low costs
  • Data in cloud
  • Local performance
  • Data in cloud
  • Comparatively fast to implement
  • Great for heavy customisations
  • Accessibility
  • Low Cost
  • On-premise control of data
  • Lessens dependence on IT
  • Low risks involved
 
  • Moderate customisations possible
  • Great multi-location performance
 
  • Security/control
  • Resilience/failover
 
  • Somewhat scalable
  • Scalable
 
  • Very basic resilience/failover
  • Good integration scope
 
  • Quick implementation
  • Automatic upgrades
   
  • Least requirement of IT dependency
Demerit
  • Huge risks involved
  • Dependency on web
  • Dependency on web
  • Not cost effective
  • Usually, web hosting requires third parties
  • Very limited customisation
  • Not scalable
  • Responsible for maintenance and upgrades
  • Data off-premise
  • Very limited accessibility
  • Data off-premise
 
  • Responsible for upgrades and maintenance
   
  • Dependence on IT
   
  • Time-intensive during deployment
    Drupal modules for DAM Integration

Acquia DAM offers a centralised cloud repository to keep all creative assets systematised, tagged and searchable throughout the lifecycle of those assets. Its easy-to-use workflow and collaboration capability lets digital marketers and designers search, review, approve and publish assets faster


It allows seamless integration with Drupal 7 and Drupal 8 for delivering a wonderful digital experience by incorporating captivating rich-media assets for centralised management.

Media: Acquia DAM, Drupal module, helps in the integration of Drupal with Acquia DAM. The integration helps Drupal content editors to browse the Acquia DAM repository using their own credentials via an entity browser plugin. They can search by keyword in order to find the right assets for the usage. WYSIWYG editor allows content authors to add assets easily. The assets marked for the usage are copied to Drupal and are stored as Media Entity references thereby rendering image styles.

Through a cron job, these assets are kept in sync between Drupal and Acquia DAM. Updates made to the assets are automatically reflected in Drupal.

This module provides a media entity provider for importing asset metadata into fields on your entities. Users can view the metadata directly in the entity browser without having to import the assets. It also provides a usage report of an asset within Drupal.

Another very useful digital asset management solution is Bynder which is a cloud-based platform for digital marketing teams to create, find, and use digital content.

Bynder integration Drupal module aids in the integration of Drupal with Bynder thereby providing seamless access to asset bank on your website. Users can import assets from and upload assets to Bynder. Image styles imported from Bynder can be displayed to match the derivatives created.


A digital agency integrated Bynder with Drupal using modules like Entity Browser and Media Entity.

Media entity module made it possible to represent Bynder assets in Drupal without actually copying them over. Its powerful metadata API helped in exposing and using all the information about them in the context of a Drupal website. It offered a central management of assets and their full availability on sites which consume them.

Entity browser module helped in implementing a user-friendly interface for letting the users browse their Bynder assets from the editor’s node of their Drupal site.

DropzoneJS driven widget helped in uploading the right assets into the Bynder DAM directly from the Drupal site.

Case study

Vallabhbhai Jhaverbhai Patel aka Sardar Patel was India’s first Deputy Prime Minister and played a pivotal role in India’s freedom movement. The Sardar Patel website, built on Drupal 8 with the help of an agency, showcases information about him gathered from numerous libraries.

The digital assets of more than 2000 content records related to the man events in the life of Sardar Patel can be viewed in the Sardar Patel website.


Objectives

The main goal behind building a dedicated site was to access books, texts, videos, audios, and similar content about him in multiple languages. By gathering and standardising the available digital assets, everything about him would be present in an easily searchable form. This would, thus, help in preserving the history of India’s influential freedom struggle through digital content for the generations to come.

Drupal 8 to the rescue

The scalability of Drupal 8 helped in migrating 2000+ content from several different sources under a single umbrella.
It also lent a mobile-first user experience.
Drupal’s out-of-the-box capabilities for building a multilingual site helped in translating the content into multiple languages.
Moreover, being the most security focussed CMS, it turned out to be the best choice for the website.

Result

1 TB of data comprising of 1000 images, 800 textual content, numerous audio and video recordings were added as content in addition to keeping the site navigation simple and easy. Most importantly, importing of content in bulk was possible with Drupal 8 thereby streamlining the content migration process and saving a lot of time.

For easy access, the website content was sorted and arranged by the main events or themes in addition to the chronological order of events that transpired in his life.


The site has easy search capability with filter options enabled to zero in on a particular subject.

What the Future holds for DAM?

Mobile applications would be at the epicentre of Digital Asset Management in the coming years. Native applications offer a seamless user experience both online and offline. Connected directly to your asset bank, they provide a mobile marketing portal and interactive features that help in creating, handling, and using the digital content on the fly. No matter what is the location of the user and whether or not they are near their laptop or desktop, they can always work with assets.

Number of mobile phone users worldwide from 2015 to 2020 (in billions) from Statista

Artificial Intelligence technology is becoming more mainstream, affordable and accessible. Digital Asset Management can leverage the benefits of AI for automating processes and centralising tasks. Also, features like facial, location, and image recognition variables; geospatial technology, and deterministic reasoning capabilities will be the key to utilising AI.

Machine learning, as shown in this graph, would require 2 to 5 years for mainstream adoption from Gartner

Machine learning algorithms can be of great use for Digital Asset Management in the future. It can recommend assets for a particular channel or task within a campaign based on analytical data. This would help you in promptly selecting the best asset swiftly without wasting the time thinking over which video, image or banner will best serve your digital marketing pursuits.

Conclusion

With the rapid expansion of businesses, digital assets like images, videos and company documents are piling up to an unimaginable extent. It is imperative that a proper governance is incorporated to handle these increasing digitised assets. Drupal 8 can be a wonderful option to integrate Digital Asset Management to manage your organisation’s increasing online presence and its ever-growing digital assets.

Drupal development is our key service where we are excelling since our birth as a company. Ping us at hello@opensenselabs.com to instill the best asset management solution for your enterprise using Drupal 8.

blog banner blog image Digital Asset Management DAM Drupal Drupal 8 Digital Assets Acquia DAM Bynder Content Management System CMS Machine Learning Artificial Intelligence Mobile marketing User experience Sardar Patel website Agile development methodology Blog Type Articles Is it a good read ? On
Categories: Drupal

Text2Image

New Drupal Modules - 2 July 2018 - 5:14am

A Drupal 8 module providing a field formatter plugin to generate images from the content of string fields, e.g. node titles and taxonomy term names, for display in views, view_modes and templates.

Categories: Drupal

Path Alias Force

New Drupal Modules - 2 July 2018 - 4:50am

Path Alias Force provides functionality to create forced aliases for entities in a multilingual environment while using the language hierarchy system. This means that whenever you create a node in a specific language and you have other languages which fallback to it, this module will automatically generate aliases for every other language besides the source one.

Categories: Drupal

Commerce OCI checkout

New Drupal Modules - 2 July 2018 - 4:10am

Makes it possible to do OCI checkout on a commerce site.

Categories: Drupal

Postcode Anywhere

New Drupal Modules - 2 July 2018 - 4:04am
Categories: Drupal

Poll Geolocation

New Drupal Modules - 2 July 2018 - 3:45am

This is a geolocation receiver module who involved in Drupal poll(admin/pollgeolocation/show), this module has some dependencies which Requires:Poll, Field, Node, Text, Filter, User, System, Options, Views.

Categories: Drupal

Drupal Association blog: It's Time To Vote - Community Elections 2018

Planet Drupal - 2 July 2018 - 2:00am

Voting is now open for the 2018 At-Large Board positions for the Drupal Association!  If you haven't yet, check out the candidate profiles including their short videos found on the profile pages. Get to know your candidates, and then get ready to vote.

Cast Your Vote!

How does voting work? Voting is open to all individuals who have a Drupal.org account by the time nominations open and who have logged in at least once in the past year.

To vote, you will rank candidates in order of your preference (1st, 2nd, 3rd, etc.). The results will be calculated using an "instant runoff" method. For an accessible explanation of how instant runoff vote tabulation works, see videos linked in this discussion.

Election voting will be held from 2 July, 2018 through 13 July, 2018. During this period, you can continue to review and comment on the candidate profiles.

Have questions? Please contact me: Rachel Lawson.

Categories: Drupal

Gizra.com: Using JSON API with WebdriverIO Tests

Planet Drupal - 1 July 2018 - 9:00pm

In Drupal, you can write automated tests with different levels of complexity. If you need to test a single function, or method of a class, probably you will be fine with a unit test. When you need to interact with the database, you can create kernel tests. And finally, if you need access to the final HTML rendered by the browser, or play with some javascript, you can use functional tests or Javascript tests. You can read more about this in the Drupal.org documentation.

So far this is what Drupal provides out of the box. On top of that, you can use Behat or WebDriver tests. This types of tests are usually easier to write and are closer to the user needs. As a side point, they are usually slower than the previous methods.

The Problem.

In Gizra, we use WebdriverIO for most of our tests. This allow us to tests useful things that add value to our clients. But these sort of tests, where you only interact with the browser output, has some disadvantages.

Imagine you want to create an article and check that this node is unpublished by default. How do you check this? Remember you only have the browser output…

One possible way could be this: Login, visit the Article creation form, fill the fields, click submit, and then… Maybe search for some unpublished class in the html:

var assert = require('assert'); describe('create article', function() { it('should be possible to create articles, unpublished by default', function() { browser.loginAs('some user'); browser.url('http://example.com/node/add/article') browser.setValueSafe('#edit-title-0-value', 'My new article'); browser.setWysiwygValue('edit-body-0-value', 'My new article body text'); browser.click('#edit-submit'); browser.waitForVisible('.node-unpublished'); }); });

This is quite simple to understand, but it has some drawbacks.

For one, it depends on the theme to get the status of the node. You could take another approach and instead of looking for a .node-unpublished class, you could logout from the current session and then try to visit the url to look for an access denied legend.

Getting Low-Level Information from a Browser Test

So the problem boils down to this:

How can I get information about internal properties from a browser test?

The new age of decoupled Drupal brings an answer to this question. It could be a bit counterintuitive at first, therefore just try to see is fit for your project.

The idea is to use the new modules that expose Drupal internals, through json endpoints, and use javascript together with a high-level testing framework to get the info you need.

In Gizra we use WDIO tests write end-to-end tests. We have some articles about this topic. We also wrote about a new module called JsonAPI that exposes all the information you need to enrich your tests.

The previous test could be rewritten into a different test. By making use of the JsonAPI module, you can get the status of a specific node by parsing a JSON document:

var assert = require('assert'); describe('create article', function() { it('should be possible to create articles, unpublished by default', function() { browser.loginAs('some user'); browser.url('http://example.com/node/add/article') browser.setValueSafe('#edit-title-0-value', 'My unique title'); browser.setWysiwygValue('edit-body-0-value', 'My new article body text'); browser.click('#edit-submit'); // Use JSON api to get the internal data of a node. let query = '/jsonapi/node/article' += '?fields[node--article]=status' += '&filter[status]=0' += '&filter[node-title][condition][path]=title' += '&filter[node-title][condition][value]=My unique title' += '&filter[node-title][condition][operator]=CONTAINS' browser.url(query); browser.waitForVisible('body pre'); let json = JSON.parse(browser.getHTML('body pre', false)); assert.ok(json[0].id); assert.equals(false, json[0].attributes.content['status']); }); });

In case you skipped the code, don’t worry, it’s quite simple to understand, let’s analyze it:

1. Create the node as usual:

This is the same as before:

browser.url('http://example.com/node/add/article') browser.setValueSafe('#edit-title-0-value', 'My unique title'); browser.setWysiwygValue('edit-body-0-value', 'My new article body text'); browser.click('#edit-submit'); 2. Ask JsonAPI for the status of an article with a specific title:

Here you see the two parts of the request and the parsing of the data.

let query = '/jsonapi/node/article' += '?fields[node--article]=status' += '&filter[status]=0' += '&filter[node-title][condition][path]=title' += '&filter[node-title][condition][value]=My unique title' += '&filter[node-title][condition][operator]=CONTAINS' browser.url(query); 3. Make assertions based on the data:

Since JsonAPI exposes, well, json data, you can convert the json into a javascript object and then use the dot notation to access to a specific level.

This is how you can identify a section of a json document. browser.waitForVisible('body pre'); let json = JSON.parse(browser.getHTML('body pre', false)); assert.ok(json[0].id); assert.equals(false, json[0].attributes.content['status']); A Few Enhancements

As you can see, you can parse the output of a json request directly from the browser.

browser.url('/jsonapi/node/article'); browser.waitForVisible('body pre'); let json = JSON.parse(browser.getHTML('body pre', false));

The json object now contains the entire response from JsonAPI that you can use as part of your test.

There are some drawbacks of the previous approach. First, this only works for Chrome. That includes the Json response inside a XML document. This is the reason why you need to get the HTML from body pre.

The other problem is this somewhat cryptic section:

let query = '/jsonapi/node/article' += '?fields[node--article]=status' += '&filter[status]=0' += '&filter[node-title][condition][path]=title' += '&filter[node-title][condition][value]=My unique title' += '&filter[node-title][condition][operator]=CONTAINS'

The first problem can be fixed using a conditional to check which type of browser are you using to run the tests.

The second problem can be addressed using the d8-jsonapi-querystring package, that allows you to write an object that is automatically converted into a query string.

Other Use Cases

So far, we used JsonAPI to get information about a node. But there are other things that you can get from this API. Since all configurations are exposed, you could check if some role have some specific permission. To make tests shorter we skipped the describe and it sections.

browser.loginAs('some user'); let query = '/jsonapi/user_role/user_role' += '?filter[is_admin]=null' browser.url(query); browser.waitForVisible('body pre'); let json = JSON.parse(browser.getHTML('body pre', false)); json.forEach(function(role) { assert.ok(role.attributes.permissions.indexOf("bypass node access") == -1); });

Or if a field is available in some content type, but it is hidden to the end user:

browser.loginAs('some user'); let query = '/jsonapi/entity_form_display/entity_form_display?filter[bundle]=article' browser.url(query); browser.waitForVisible('body pre'); let json = JSON.parse(browser.getHTML('body pre', false)); assert.ok(json[0].attributes.hidden.field_country);

Or if some specific HTML tag is allowed in an input format:

let query = '/jsonapi/filter_format/filter_format?filter[format]=filtered_html' browser.url(query); browser.waitForVisible('body pre'); let json = JSON.parse(browser.getHTML('body pre', false)); let tag = '<drupal-entity data-*>'; assert.ok(json[0].attributes.filters.filter_html.settings.allowed_html.indexOf(tag) > -1);

As you can see, there are several use cases. The benefits of being able to explore the API by just clicking the different links sometimes make this much easier to write than a kernel test.

Just remember that this type of tests are a bit slower to run, since they require a full Drupal instance running. But if you have some continuous integration in place, it could be an interesting approach to try. At least for some specific tests.

We have found this quite useful, for example, to check that a node can be referenced by another in a reference field. To check this, you need the node ids of all the nodes created by the tests.

A tweet by @skyredwang could be accurate to close this post.

Remember how cool Views have been since Drupal 4.6? #JSONAPI module by @e0ipso is the new "Views".

— Jingsheng Wang (@skyredwang) January 9, 2018

Continue reading…

Categories: Drupal

FZ Test

New Drupal Modules - 1 July 2018 - 2:05pm
Origin

A wanted to make a little module to help the Drupal development

Features

There are functions:
fz_t(variable name) - to write out the value of variable (array also)

fz_die() - The same than fz_t() + die();
fz_mem() - shows only the memory using
fz_q() - wuery testing

Categories: Drupal

FZ Teszt

New Drupal Modules - 1 July 2018 - 1:59pm
Origin

A wanted to make a little module to help the Drupal development

Features

There are functions:
fz_t(variable name) - to write out the value of variable (array also)

fz_die() - The same than fz_t() + die();
fz_mem() - shows only the memory using
fz_q() - wuery testing

Categories: Drupal

Pages

Subscribe to As If Productions aggregator - Drupal