123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- /********************************************************
- * *
- * Javascript for the Title-Footer plugin for Reveal.js *
- * *
- * Author: Igor Leturia *
- * *
- * License: GPL v3 *
- * http://www.gnu.org/copyleft/gpl.html *
- * *
- ********************************************************/
- /* Title-Footer object and properties declaration with default values */
- var title_footer=
- {
- title: '',
- background:'rgba(0,0,0,0.1)',
- };
- /* Function to obtain all child elements with any of the indicated tags (from http://www.quirksmode.org/dom/getElementsByTagNames.html) */
- title_footer.getElementsByTagNames=function(list,obj)
- {
- if (!obj)
- {
- var obj=document;
- };
- var tagNames=list.split(',');
- var resultArray=new Array();
- for (var i=0;i<tagNames.length;i++)
- {
- var tags=obj.getElementsByTagName(tagNames[i]);
- for (var j=0;j<tags.length;j++)
- {
- resultArray.push(tags[j]);
- };
- };
- var testNode=resultArray[0];
- if (!testNode)
- {
- return [];
- };
- if (testNode.sourceIndex)
- {
- resultArray.sort(
- function (a,b)
- {
- return a.sourceIndex-b.sourceIndex;
- }
- );
- }
- else if (testNode.compareDocumentPosition)
- {
- resultArray.sort(
- function (a,b)
- {
- return 3-(a.compareDocumentPosition(b)&6);
- }
- );
- };
- return resultArray;
- };
- /* Method to initialize the Title-Footer footer */
- title_footer.initialize=function(title,background)
- {
- // Link to the Title-Footer CSS
- var link=document.createElement("link");
- link.href="plugin/title-footer/title-footer.css";
- link.type="text/css";
- link.rel="stylesheet";
- document.getElementsByTagName("head")[0].appendChild(link);
- // Initialize properties according to parameters
- this.background=background || 'rgba(0,0,0,0.1)';
- var title=title || '';
- if (title!='')
- {
- this.title=title;
- }
- else
- {
- var first_section=document.getElementsByTagName('section')[0];
- if (first_section.getElementsByTagName('section').length>0)
- {
- first_section=first_section.getElementsByTagName('section')[0];
- };
- var title_elements=this.getElementsByTagNames('h1,h2,h3',first_section);
- if (title_elements.length>0)
- {
- this.title=title_elements[0].textContent;
- for (var title_elements_index=1;title_elements_index<title_elements.length;title_elements_index++)
- {
- this.title=this.title+' - '+title_elements[title_elements_index].textContent;
- };
- };
- };
- // Create the Title-Footer footer
- var title_footer=document.createElement('footer');
- title_footer.setAttribute('id','title-footer');
- title_footer.setAttribute('style','background:'+this.background);
- var title_footer_p=document.createElement('p');
- title_footer.appendChild(title_footer_p);
- var a_element=document.createElement('a');
- a_element.setAttribute('href','#/0');
- a_element.appendChild(document.createTextNode(this.title));
- title_footer_p.appendChild(a_element);
- var div_class_reveal=document.querySelectorAll('.reveal')[0];
- div_class_reveal.appendChild(title_footer);
- };
|