diff options
-rw-r--r-- | common/html-coverpage/coverpage.html (renamed from common/html-coverpage/index.html) | 3 | ||||
-rw-r--r-- | common/html-coverpage/coverpage.js | 13 | ||||
-rw-r--r-- | common/html-coverpage/static/rtems/js/catalogue.js | 81 | ||||
-rw-r--r-- | wscript | 27 |
4 files changed, 81 insertions, 43 deletions
diff --git a/common/html-coverpage/index.html b/common/html-coverpage/coverpage.html index 301196d..dc13f88 100644 --- a/common/html-coverpage/index.html +++ b/common/html-coverpage/coverpage.html @@ -55,7 +55,8 @@ </div> <!-- Load the catalogues and generate the content --> <script type="text/javascript" src="static/rtems/js/catalogue.js"></script> - <script> loadCatalogue('catalogue.xml'); </script> + <script type="text/javascript" src="coverpage.js"></script> + <script> coverPageCatalogue(); </script> <!-- current-bottom --> </div> <!-- layout-bottom --> diff --git a/common/html-coverpage/coverpage.js b/common/html-coverpage/coverpage.js new file mode 100644 index 0000000..4655c29 --- /dev/null +++ b/common/html-coverpage/coverpage.js @@ -0,0 +1,13 @@ +/*! + * Copyright 2017 Chris Johns <chrisj@rtems.org> + */ + +/* + * Embed the XML catalogue in this JS code to get around the Chrome on Windows + * security "feature" where loading of a local disk file under the same path as + * the HTML Chrome just loaded from disk is not allowed. + */ +function coverPageCatalogue() { + xml = '@CATALOGUE'; + paintCatalogue($.parseXML(xml)); +} diff --git a/common/html-coverpage/static/rtems/js/catalogue.js b/common/html-coverpage/static/rtems/js/catalogue.js index d54def2..ae32aed 100644 --- a/common/html-coverpage/static/rtems/js/catalogue.js +++ b/common/html-coverpage/static/rtems/js/catalogue.js @@ -29,48 +29,51 @@ function catalogueFooter() { '</table>\n'; } -function loadCatalogue(path) { +function paintCatalogue(xml) { var el_cat_title = $('#rtems-catalogue-title'); var el_cat = $('#rtems-catalogue'); + /* + * Use jquery as XMLDocument is consider not stable on Firefox's web site. + */ + var pdfIcon = 'static/images/Adobe_PDF_file_icon_32x32.png'; + var htmlIcon = 'static/images/html-xxl.png'; + var docs = $(xml).find('rtems-docs'); + var date = $(docs).attr('date'); + var title = $(docs).find('catalogue'); + var table = catalogueHeader(date); + $(docs).find('doc').each(function() { + var name = $(this).find('name').text(); + var title = $(this).find('title').text(); + var release = $(this).find('release').text(); + var version = $(this).find('version').text(); + var html = $(this).find('html').text(); + var pdf = $(this).find('pdf').text(); + var singlehtml = $(this).find('singlehtml').text(); + var empty = '<td></a></td>\n'; + table += '<tr>\n'; + if (html) + table += '<td><a href="' + html + '">' + title + '</a></td>\n'; + else + table += empty; + if (pdf) + table += '<td><a href="' + '/' + pdf + '">' + + '<img src="' + pdfIcon + '" width="20" height="20"></a></td>\n'; + else + table += empty; + if (singlehtml) + table += '<td><a href="' + '/' + singlehtml + '">' + + '<img src="' + htmlIcon + '" width="20" height="20"></a></td>\n'; + else + table += empty; + table += '</tr>\n'; + }); + table += catalogueFooter(); + el_cat_title.html('<h3>' + $(title).text() + '</h3>'); + el_cat.html(table); +} +function loadCatalogue(path) { var f = $.get(path, function(xml) { - /* - * Use jquery as XMLDocument is consider not stable on Firefox's web site. - */ - var pdfIcon = 'static/images/Adobe_PDF_file_icon_32x32.png'; - var htmlIcon = 'static/images/html-xxl.png'; - var docs = $(xml).find('rtems-docs'); - var date = $(docs).attr('date'); - var title = $(docs).find('catalogue'); - var table = catalogueHeader(date); - $(docs).find('doc').each(function() { - var name = $(this).find('name').text(); - var title = $(this).find('title').text(); - var release = $(this).find('release').text(); - var version = $(this).find('version').text(); - var html = $(this).find('html').text(); - var pdf = $(this).find('pdf').text(); - var singlehtml = $(this).find('singlehtml').text(); - var empty = '<td></a></td>\n'; - table += '<tr>\n'; - if (html) - table += '<td><a href="' + html + '">' + title + '</a></td>\n'; - else - table += empty; - if (pdf) - table += '<td><a href="' + '/' + pdf + '">' + - '<img src="' + pdfIcon + '" width="20" height="20"></a></td>\n'; - else - table += empty; - if (singlehtml) - table += '<td><a href="' + '/' + singlehtml + '">' + - '<img src="' + htmlIcon + '" width="20" height="20"></a></td>\n'; - else - table += empty; - table += '</tr>\n'; - }); - table += catalogueFooter(); - el_cat_title.html('<h3>' + $(title).text() + '</h3>'); - el_cat.html(table); + paintCatalogue(xml); }, 'xml'); } @@ -9,7 +9,7 @@ path.append(abspath('common')) import waflib import waf as docs_waf -version = '4.11 (4.11.2)' +version = 'Master (4.11.99)' build_all = ['user', 'rsb', @@ -36,18 +36,39 @@ def configure(conf): def catalogue(ctx): docs_waf.xml_catalogue(ctx, building, version) +def coverpage_js(ctx): + js = None + xml = None + for f in ctx.inputs: + if f.abspath().endswith('.js'): + with open(f.abspath()) as i: + js = i.read() + elif f.abspath().endswith('.xml'): + with open(f.abspath()) as i: + xml = i.read() + xml = xml.replace('\n', ' \\\n'); + with open(ctx.outputs[0].abspath(), 'w') as o: + o.write(js.replace('@CATALOGUE', xml)) + def build(ctx): for b in building: ctx.recurse(b) # - # Build the catalogue and install with the coverpage and static content. + # Build the catalogue, coverpage.js and install. # ctx(rule = catalogue, target = 'catalogue.xml', source = ['wscript', 'common/waf.py']) ctx.install_files('${PREFIX}', 'catalogue.xml') - ctx.install_files('${PREFIX}', 'common/html-coverpage/index.html') + ctx(rule = coverpage_js, + target = 'coverpage.js', + source = ['wscript', 'catalogue.xml', 'common/html-coverpage/coverpage.js']) + ctx.install_as('${PREFIX}/coverpage.js', 'coverpage.js') + # + # Install the static content. + # + ctx.install_as('${PREFIX}/index.html', 'common/html-coverpage/coverpage.html') static_dir = ctx.path.find_dir('common/html-coverpage/static') ctx.install_files('${PREFIX}/static', static_dir.ant_glob('**'), |