// ==UserScript== // @version 1.0 // @include *.fictionpress.com/s/* // @namespace ffnet // @name FictionPress story export script. // @author Alssn // @description Writes all chapters of the story on one page. // @downloadURL https://update.greasyfork.icu/scripts/16076/FictionPress%20story%20export%20script.user.js // @updateURL https://update.greasyfork.icu/scripts/16076/FictionPress%20story%20export%20script.meta.js // ==/UserScript== function find(expr) { var posts = document.evaluate(expr, document, null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); var postsArray = new Array(); for (var i = 0; i < posts.snapshotLength; ++i) { postsArray.push(posts.snapshotItem(i)); } return postsArray; } function addButtons(){ // Adding buttons // res = find("//f[@id='f_size']"); res = document.getElementById("f_size").parentNode; //creating links var addHeadersButton=document.createElement('a'); addHeadersButton.href='javascript:'; addHeadersButton.innerHTML='Headers'; addHeadersButton.setAttribute('title','Add header to each chapter'); var addIndexButton=document.createElement('a'); addIndexButton.href='javascript:'; addIndexButton.innerHTML='Index'; addIndexButton.setAttribute('title','Create table of contents'); var expAllButton=document.createElement('a'); expAllButton.id='exportAllButton'; expAllButton.href='javascript:'; expAllButton.setAttribute('title','Show the whole story on one page'); expAllButton.innerHTML='Story'; var expButton=document.createElement('a'); expButton.setAttribute('title','Show only text'); expButton.href='javascript:'; expButton.innerHTML='Text'; // Adding listeners - that's the only way to do something after main code finsihed working; expAllButton.addEventListener('click',exportAll,false); expButton.addEventListener('click',exportCh,false); addHeadersButton.addEventListener('click',addHeaders,false); addIndexButton.addEventListener('click',addIndex,false); //fE and fA var e = document.createElement('span'); e.setAttribute('style','font-family: serif;font-weight:bolder;color:#61a4e4'); e.setAttribute('title','Export'); e.innerHTML = "fE: "; var a = document.createElement('span'); a.setAttribute('title','Add'); a.setAttribute('style','font-family: serif;font-weight:bolder;color:#61a4e4'); a.innerHTML = "fA: "; res.insertBefore(document.createTextNode(' '),res.firstChild); res.insertBefore(addIndexButton,res.firstChild); res.insertBefore(document.createTextNode(' '),res.firstChild); res.insertBefore(addHeadersButton,res.firstChild); res.insertBefore(a,res.firstChild); res.insertBefore(document.createTextNode(' '),res.firstChild); res.insertBefore(expButton,res.firstChild); res.insertBefore(document.createTextNode(' '),res.firstChild); res.insertBefore(expAllButton,res.firstChild); res.insertBefore(e,res.firstChild); } //Adding buttons to page; addButtons(); //Adding table of contents function addIndex(){ var storytext = document.getElementById('storytext'); //Point of insert var chapters = document.getElementsByName('ffnee_chapter'); //Creating base structure var index = document.createElement('div'); index.innerHTML = '