This article illustrates how the copyright details have been displayed in the Open Event Frontend project using the Open Event Orga API. The API endpoints which will be mainly focussing on for fetching the copyright details are:
GET /v1/event-copyright/{event_copyright_id}
The events have copyrights which give the creator of the event exclusive rights for its use and distribution. In the Open Event application, the copyright details can be seen on the public event page. The public event page contains the events details like description, venue, tickets, speakers, sponsors along with the copyright details and these details are present on the public/index route in the application. Apart from index route, we have multiple subroutes to display the detailed information of speakers, sessions and schedule. The one thing which remains common to all the public event pages is the copyright information. Most of the time the copyright details are event specific so they are nested within the event model so if we want to display them we need to fetch the event model first.
The code to fetch the event model looks like this:
model(params) { return this.store.findRecord('event', params.event_id, { include: 'social-links, event-copyright' }); }
If we try to comprehend the code then we can see that ‘event-copyright’ details are included inside the model. The reason behind this is the fact that the copyright information is not specific to a particular route and is displayed on the all the public event pages. After fetching the copyright details the next step we need to perform is to display them on the event’s index page.
The code to display the copyright details looks like this:
{{#if model.event.copyright}} <div class="copyright"> {{public/copyright-item copyright=model.event.copyright}} </div> {{/if}}
In the first line, we have an if conditional statement which verifies whether the copyright data exists or not. If the data does not exist then the copyright class will not be visible on the page and if the model is not empty then it will be displayed with the help of model.event.copyright which is responsible for displaying the fetched data on the page.
If we see in the third line, we have called an another template ‘copyright-item’ which is responsible for how the data will look or in simpler words the UI of the copyright data.
The code which determines UI of the copyright details looks like this:
<img src="{{copyright.logoUrl}}" class="copyright-image" alt="{{copyright.licence}}"> <br> <div class='copyright text'> <p> {{t 'This event is licenced under'}} <a href="{{copyright.licenceUrl}}"> {{copyright.licence}} </a>. </p> </div>
In the first line of code, we are providing the src to the image which is stored in ‘logoUrl’ variable of the copyright object. If we hover the image we can see the copyright license which is stored in the ‘license’ variable. Then finally we have copyright license’s URL which is stored under ‘licenceUrl’ variable of copyright object. The resulting UI from the above source code looks like this :
Fig. 1: The user interface of the copyright details
Now we need to test whether the copyright details are completely displayed or not. To test it we created an integration test in which we created a sample ember object to check the correctness of the code. The sample ember object for copyright details looks like this:
To view the complete code regarding the copyright API integration check this.
const copyright = EmberObject.create({ holder : 'Creative Commons', holderUrl : 'https://creativecommons.org', licence : 'Public Domain Dedication (CC0)', licenceUrl : 'https://creativecommons.org/publicdomain/zero/1.0/', year : 2007, logoUrl : 'http://image.ibb.co/gt7q7v/pdd.png' });
To conclude, this is how we integrated copyright information inside the Open Event Frontend project using the Open Event Orga API efficiently.
Resources:
- Open Event API Docs
- Official Ember Data documentation
- Lodash documentation
- An article on how to create GET requests in ember in the blog by asommer70
Image Source : https://libsource.com/understanding-creative-commons-licensing/