Changeset 24243


Ignore:
Timestamp:
2011-07-08T14:01:45+12:00 (10 years ago)
Author:
sjb48
Message:

Oran code for supporting format changes to document.

Location:
main/trunk/greenstone3/web/interfaces/oran
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/web/interfaces/oran/js/gui_div.js

    r24202 r24243  
    5858}
    5959
    60 
    6160function checkDocumentRadio()
    6261{
     
    7473{
    7574    console.log("Saving changes to "+checkDocumentRadio());
    76 }
    77 
    78 
     75    console.log("TOC="+$('input[name="TOC"]').attr('checked'));
     76    console.log("Cover Image="+$('input[name="bookCover"]').attr('checked'));
     77
     78    var myurl = document.URL;
     79
     80    var collection_name = getSubstring(myurl, "&c", "&");
     81    var document_id = getSubstring(myurl, "&d", "&");
     82    var document_type = getSubstring(myurl, "&dt", "&");
     83    var prev_action = getSubstring(myurl, "&p.a", "&");
     84    var prev_service = getSubstring(myurl, "&p.s", "&");
     85
     86    var post_url = "http://localhost:8989/greenstone3/format?a=f&sa=saveDocument&c=" + collection_name + "&d=" + document_id + "&dt=" + document_type + "&p.a=" + prev_action + "&p.s=" + prev_service;
     87
     88    // XML will be automatically wrapped in <display><format> tags when saved to collection config
     89    var xml = '<format><gsf:option name="TOC" value="'+$('input[name="TOC"]').attr('checked')+'"/><gsf:option name="coverImage" value="'+$('input[name="bookCover"]').attr('checked')+'"/></format>';
     90
     91    $.post(post_url, {data: xml}, function(data) {
     92            console.log("Success, we have received data");
     93    }, 'xml');
     94}
    7995
    8096/* FUNCTIONS FOR FORMAT EDITING */                                                                   
     
    100116}
    101117
    102 //function createFormatStatement()
    103 //{
    104 
    105     //var formatDiv = document.getElementById('formatStatement');
    106     //var formatStatement = innerXHTML(formatDiv);
    107     //console.log(formatStatement);
    108 
    109     // find collection name
    110 
    111     //var myurl = document.URL;
    112     //console.log(myurl);
    113     //var first = myurl.indexOf("&c")+3;
    114     //var last = myurl.indexOf("&", first);
    115    
    116     //var collection_name = getSubstring(myurl, "&c", "&"); //myurl.substring(first,last); ///&c=(.*)&/.exec(myurl);
    117     //console.log(collection_name);
    118 
    119     //first = myurl.indexOf("&s")+3;
    120     //last = myurl.indexOf("&", first);
    121 
    122     //var service_name = myurl.substring(first,last);
    123     //console.log(service_name);
    124 
    125     //var classifier_name = null;
    126 
    127     //if(service_name == "ClassifierBrowse")
    128     //{
    129     //    first = myurl.indexOf("&cl")+4;
    130     //    last = myurl.indexOf("&", first);
    131 
    132     //    classifier_name = myurl.substring(first,last);
    133     //    console.log(classifier_name);
    134     //}
    135 
    136     //var myurl = 'http://localhost:8080/greenstone3/format?a=s&sa=s&t='+formatStatement;
    137 
    138     //jQuery.post( url, [ data ], [ success(data, textStatus, XMLHttpRequest) ], [ dataType ] )
    139 
    140     // How do I find out my collection name?
    141 
    142118function getSubstring(str, first, last)
    143119{
    144120    var first_index = str.indexOf(first)+first.length+1;
    145121    var last_index = str.indexOf(last, first_index);
     122
     123    if(last_index == -1)
     124        last_index = str.length;
    146125
    147126    var substring = str.substring(first_index, last_index);
     
    228207
    229208    $.post(post_url, {data: formatStatement}, function(data) {
    230         //$('.result').innerHTML = data; //html(data);
    231        
    232209        // An error is returned because there is no valid XSLT for a format update action, there probably shouldn't be one so we ignore what the post returns.   
    233210        console.log("Successfully saved");
    234         //console.log(data);
    235211        }, 'html');
    236212}
     
    245221    var prev_action = getSubstring(myurl, "&p.a", "&");
    246222    var prev_service = getSubstring(myurl, "&p.s", "&");
    247     //var classifier_name = null;
    248 
    249     //if(service_name == "ClassifierBrowse")
    250     //    classifier_name = getSubstring(myurl, "&cl", "&");
    251 
    252 
    253     //var post_url = "http://localhost:8989/greenstone3/format?a=f&sa=getXSLT&c=" + collection_name +"&s=" + service_name+"&d=" + document_id + "&o=skinandlib";
     223
    254224    var post_url = "http://localhost:8989/greenstone3/format?a=d&c=" + collection_name + "&d=" + document_id + "&dt=" + document_type + "&p.a=" + prev_action + "&p.s=" + prev_service + "&o=skinandlib";
    255225
    256     //if(classifier_name != null)
    257     //    post_url = post_url + "&cl=" + classifier_name;
    258 
    259226    $.post(post_url, {data: classname}, function(data) {
    260             //$('.result').innerHTML = data; //html(data);
    261227            console.log("Success, we have received data");
    262             //console.log(data);
    263228            classname = "." + classname;
    264             console.log(classname); //data.getElementsByTagName("div"));
     229            console.log(classname);
    265230            var content = $( data ).find(classname);
    266231            console.log(content.xml());
     
    269234}
    270235
    271 /*
    272     $.ajax({
    273         type: "POST",
    274         url: "http://localhost:8080/greenstone3/format?a=s&sa=s",
    275         data: formatStatement,
    276         processData: false,
    277         success: function(data) {
    278             //$('.result').html(data);
    279             console.log("Success, we have received data");
    280             //console.log(data);
    281         }
    282      });
    283 */
    284     /*
    285     $.ajax({
    286         url: myurl,
    287         success: function(data) {
    288             //$('.result').html(data);
    289             console.log("Success, we have received data");
    290             console.log(data);
    291         }
    292     });
    293     */
    294     //if(formatStatement.hasChildNodes())
    295     //{
    296         //var formatstring = traverse(formatStatement, "");
    297         //console.log(formatstring);
    298 
    299         // var children = $(formatStatement).children('div');
    300         // for(var i=0; i < children.length; i++)
    301         //    traverse(children[i], formatstring)
    302      
    303         /*
    304         var children = formatStatement.childNodes; //[]getChildNodes();
    305         var current;
    306         for(var i = 0; i < formatStatement.childNodes.length; i++)
    307         {
    308             current = formatStatement.childNodes[i];
    309             //console.log(current.nodeName);
    310             //console.log(current.nodeType);
    311             if(current.nodeName=='DIV')
    312             {
    313                 //console.log(current);
    314                 //console.log(current.className);
    315                 var gsf = find_class(current);
    316                 console.log(gsf);
    317             }
    318         }
    319         */
    320     //}
    321 //}
    322 
    323236function traverse(node, formatstring)
    324237  {
    325     //console.log("node=("+node.nodeName+","+node.nodeType+")");
    326238
    327239    if(node.nodeName=='DIV')
     
    339251  }
    340252       
    341 
    342 /*
    343     console.log("node=("+node.nodeName+","+node.nodeType+")");
    344 
    345     if(node.children.length == 0) //hasChildNodes())
    346     {
    347         console.log("No children so return");
    348         return "";
    349     }
    350 
    351     if(node.nodeName=='DIV')
    352     {
    353         console.log("Found a div");
    354         formatstring = formatstring + find_class(node);
    355     }       
    356    
    357     for(var i = 0; i < node.children.length; i++)
    358         return recursiveTraverse(node.children[i], formatstring);
    359    
    360 
    361     return formatstring;
    362   }
    363 */
    364 
    365253function find_class(current)
    366254{
     
    696584    console.log('function bind_all_sortables()');
    697585    bind_template_sortable();
    698     //bind_table_sortable();
    699     //bind_tr_sortable();
    700     //bind_td_sortable();
    701586    bind_choose_metadata_sortable();
    702587    bind_link_sortable();
     
    714599{
    715600    console.log('function bind_tables()');
    716     //$('.tr').resize_tables($(this)); //equalHeights();
    717601
    718602    $('#sectionHeader').click(function () {
     
    728612    $(".td-div").resizable({
    729613                alsoResize: 'parent',
    730                 //containment: 'parent',
    731614                handles: 'w,e',
    732615                stop: function(event, ui) {
    733616                        console.log('Resize table on stop');
    734617                        resize_tables($(this));
    735                         //$(this).parent().parent().equalHeights();
    736618                }, });
    737 
    738     //$(".droppable").sortable({
    739     //        'cursor':'pointer',
    740     //        'tolerance': 'pointer',
    741     //        'items':'.column, .td-div',
    742     //        'placeholder':'placeholder'
    743     //});
    744619
    745620    $(".droppable").droppable({
    746621            accept: '.element_type_td',
    747622            tolerance: 'pointer',
    748             activate: function(event, ui) { $(this).addClass("droppable_hl");}, // console.log("droppable activated")},
    749             deactivate: function(event, ui) { $(this).removeClass("droppable_hl"); }, // console.log("droppable deactivated")},
     623            activate: function(event, ui) { $(this).addClass("droppable_hl");},
     624            deactivate: function(event, ui) { $(this).removeClass("droppable_hl"); },
    750625            drop: function(event, ui) {
    751                 //if ($(this).hasClass("ui-draggable"))
    752                 //if (ui.helper.hasClass("ui-draggable"))
    753                 //{
    754626                 var neverempty = document.createElement("div");
    755627                 neverempty.setAttribute("class","neverempty block");
     
    759631                 neverempty.appendChild(text);
    760632                 var td = document.createElement("td");
    761                  var div = document.createElement("div"); // class=\"td block\" title=\"td-div\"");
     633                 var div = document.createElement("div");
    762634                 div.setAttribute("title","td-div");
    763635                 div.setAttribute("class","td-div block");
     
    775647                 bind_td_sortable();
    776648                 bind_block_mouseover();
    777                  //bind_all_sortables();
    778                 //}
    779                 //else
    780                 //{
    781                 //    console.log("Attempting to add");
    782                     //$(this).appendTo(ui.draggable[0]);
    783                 //    $(this).prepend(ui.draggable[0]);
    784                     //$(ui.draggable[0]).appendTo($(this));
    785                 //}
    786649            }
    787650        });
     
    807670    }
    808671
    809     //console.log('function replace_with(item, me)');
    810672    item.replaceWith(me); //'<div class="element element-txt">This text box has been added!</div>');
    811     //item.find('select').attr("value", CURRENT_SELECT_VALUE);
    812 
    813 
    814     //if(select != null){
    815     //    console.log("Attempting to select " + CURRENT_SELECT_VALUE);
    816     //    console.log("length = "+select.length);
    817     //    for(index = 0; index < select.length; index++) {
    818     //          console.log(select[index].value); 
    819     //       if(select[index].value == CURRENT_SELECT_VALUE)
    820     //          console.log("Found "+CURRENT_SELECT_VALUE+" at index " + index);
    821     //          select.selectedIndex = index;
    822     //    }
    823     // }
    824673
    825674    resize_tables(item);
     
    830679function resize_tables(item)
    831680{
    832     //console.log('function resize_tables(item)');
    833681    var max_height = 0;
    834682    (item.parents('.table')).each(function(index) {
     
    858706            //'nested':'.gsf:metadata'
    859707            stop: function(event, ui) {
    860                 //if (ui.item.hasClass("ui-draggable") && ui.item.hasClass('css_table')) { replace_with(ui.item, "<table border=\"1\" width=\"100%\" height=\"50px\"><tr><td><div class=\"td block\" title=\"td-div\">XXXXXXXXXXXXXXXXXXXXXXXX</div></td></tr></table>"); }
    861708                if (ui.item.hasClass("ui-draggable") && ui.item.hasClass('draggable_table')) { replace_with(ui.item, "<table class=\"table\" border=\"2\"></table>"); }
    862709                if (ui.item.hasClass("ui-draggable") && ui.item.hasClass('draggable_gsf_choose_metadata')) { replace_with(ui.item, gsf_choose_metadata_element); }
     
    884731            'connectWith':'column'});
    885732
    886     //$('.column').sortable({
    887     //    connectWith:['.column'],
    888     //    placeholder: 'placeholder',
    889     //    items:'td-div'
    890     //});
    891 
    892 
    893     //$('.column').sortable({
    894     //        'cursor':'pointer',
    895     //        'tolerance': 'pointer',
    896     //        'items':'.td-div',
    897     //        'placeholder':'placeholder',
    898     //        'connectWith':'.column'
    899             //'nested':'.gsf:metadata'
    900             //receive: function(event, ui) { alert("Attempted to receive"); },
    901             //stop: function(event, ui) {
    902             //    if (ui.item.hasClass("ui-draggable") && ui.item.hasClass('element_type_gsf_metadata')) { replace_with(ui.item, gsf_metadata_element); }
    903 
    904     //});
    905 
    906     //console.log('function bind_td_sortable()');
    907733    $('.td-div').sortable({
    908734            'cursor':'pointer',
     
    910736            'items':'.gsf_metadata, .gsf_choose_metadata, .gsf_link, .gsf_switch',
    911737            'placeholder':'placeholder',
    912             //'connectWith':'.td-div',
    913             //'nested':'.gsf:metadata'
    914738            receive: function(event, ui) { alert("Attempted to receive"); },
    915739            stop: function(event, ui) {
     
    1089913var toggleContent = function(e)
    1090914{
    1091     //console.log('var toggleContent = function(e)');
    1092915    console.log('parent: ' + $(this).html());
    1093916    if ($(this).html() == '[+]'){ //targetContent.css('display') == 'none') {
    1094         //$(this).parent().parent().parent().parent().parent().children(".block,.table").slideDown(300);
    1095         //$(this).parents().children(".block,.table").stopPropagation().slideDown(300);
    1096         //var x = $(this).parent().parent().parent().parent().parent();
    1097         //var y = $(this).parent().parent().parent().parent().parent().children(".block,.table");
    1098         //var z = $(this).closest(".block").children(".table, .block");
    1099917        $(this).closest(".block").children(".table, .block").slideDown(300);
    1100918        $(this).html('[-]');
     
    1102920        $(this).addClass("ui-icon-minusthick");
    1103921    } else {
    1104         //$(this).parent().parent().parent().parent().parent().children(".block,.table").slideUp(300);
    1105         //$(this).parents().children(".block,.table").slideUp(300);
    1106922        $(this).closest(".block").children(".table, .block").slideUp(300);
    1107923        $(this).html('[+]');
  • main/trunk/greenstone3/web/interfaces/oran/transform/layouts/formatmanager.xsl

    r24202 r24243  
    44    xmlns:util="xalan://org.greenstone.gsdl3.util.XSLTUtil"
    55    xmlns:gslib="http://www.greenstone.org/skinning"
     6    xmlns:gsf="http://www.greenstone.org/greenstone3/schema/ConfigFormat"
    67    extension-element-prefixes="java util"
    78    exclude-result-prefixes="java util">
     
    6162            .elementToolBox {position: fixed; top: 25%; right: 0px; background: none repeat scroll 0% 0% white; width: 250px; }
    6263
     64            .visible {display: block;}
     65            .hidden {display: none;}
    6366            <!-- .gsf_metadata { border: solid 2px #0000BB; background-color: #440077; } -->
    6467
     
    7780                        <!-- TOC on or off -->
    7881                        <xsl:choose>
    79                             <xsl:when test="/page/pageResponse/format[@type='display']/gsf:option[(@name='TOC') and (@value='true')]">
     82                            <xsl:when test="/page/pageResponse/format[@type='display']/gsf:option[@name='TOC']/@value='true'">
    8083                                <input type="checkbox" name="TOC" checked="checked" onclick="displayTOC(this)">Display Table of Contents (set to true)</input>
    8184                            </xsl:when>
     
    8790                        <!-- book cover image on or off -->
    8891                        <xsl:choose>
    89                             <xsl:when test="/page/pageResponse/format[@type='display']/gsf:option[(@name='coverImage') and (@value='true')]">
     92                            <xsl:when test="/page/pageResponse/format[@type='display']/gsf:option[@name='coverImage']/@value='true'">
    9093                                <input type="checkbox" name="bookCover" checked="checked" onclick="displayBookCover(this)">Display Book Cover Image (set to true)</input>
    9194                            </xsl:when>
  • main/trunk/greenstone3/web/interfaces/oran/transform/layouts/main.xsl

    r24149 r24243  
    1818    <xsl:include href="formatmanager.xsl"/>
    1919   
    20     <!--<xsl:include href="xml-to-gui.xsl"/>-->
    21     <!--<xsl:include href="xml-to-gui-templates.xsl"/>-->
    2220
    2321    <!-- put the URL or path of your site here site -->
     
    5250                    </div>
    5351                   
    54                     <xsl:if test="/page/pageRequest/paramList/param[(@name='formatedit') and (@value='1')]">
     52                    <xsl:if test="/page/pageRequest/paramList/param[(@name='formatedit') and (@value='on')]">
    5553                        <xsl:call-template name="formatmanagerpre"/>
    5654                    </xsl:if>
  • main/trunk/greenstone3/web/interfaces/oran/transform/layouts/xml-to-gui.xsl

    r24137 r24243  
    381381       
    382382
    383         <!-- <td class="td block resizable" title="td" valign="{@valign}" style='overflow: hidden;'> -->
    384383        <td class="column" valign="{@valign}" title="td">
    385384            <div class="td-div block" title="td-div">
    386385            <div class="neverempty block" style="height:50px">NEVER EMPTY</div>
    387386
    388             <!-- <xsl:text>&lt;td</xsl:text>valign=<xsl:value-of select="@valign"/><xsl:text>&gt;</xsl:text><a href="#" class="minmax">[-]</a><a href="#" class="remove">[x]</a> -->
    389387                <xsl:apply-templates mode="xml-to-gui">
    390388                    <xsl:with-param name="depth" select="$depth"/>
    391389                    <xsl:with-param name="metadataSets" select="$metadataSets"/>
    392390                </xsl:apply-templates>
    393                 <!-- <xsl:text>&lt;/td&gt;</xsl:text><br/><br/> -->
    394391            </div>
    395392        </td>
     
    403400        <xsl:param name="metadataSets"/>
    404401
    405         <!-- <xsl:text>&lt;br/&gt;</xsl:text> <br/> -->
    406402        <div class="block leaf gsf_text" title="gsf:text">
    407                 <!-- <xsl:variable name="rawtext"><xsl:text disable-output-escaping='no'>br/</xsl:text></xsl:variable> -->
    408403                <table class="header"><tbody><tr><td class="header">&lt;<input class="text" type="text" name="rawtextinput" size="10" value="br/"></input>&gt;</td><td class="header"><a href="[myhref]" class="ui-icon ui-icon-closethick"/></td></tr></tbody></table>
    409404        </div>
     
    420415        <xsl:param name="metadataSets"/>
    421416
    422         <!-- <xsl:text>&lt;br/&gt;</xsl:text> <br/> -->
    423417        <div class="block leaf gsf_text" title="gsf:text">
    424                 <!-- <xsl:variable name="rawtext"><xsl:text disable-output-escaping='no'>i</xsl:text></xsl:variable> -->
    425418                <table class="header"><tbody><tr><td class="header">&lt;<input class="text" type="text" name="rawtextinput" size="10" value="i"></input>&gt;</td><td class="header"><a href="[myhref]" class="ui-icon ui-icon-closethick"/></td></tr></tbody></table>
    426419        </div>
  • main/trunk/greenstone3/web/interfaces/oran/transform/pages/document.xsl

    r24202 r24243  
    9090
    9191                        <!-- the book's cover image -->
    92                         <!-- COULD BE WORTH SETTING THE STYLE TO DISPLAY:BLOCK OR DISPLAY:NONE BASED ON WHETHER FLAG IS TRUE OR FALSE -->
    93                         <!-- OTHERWISE, IF FLAG IS FALSE AND WE WANT TO TURN BOOK COVER ON, NEED TO REQUEST THE NEW PAGE WITH FLAG SET -->
    94                         <xsl:if test="/page/pageResponse/format[@type='display']/gsf:option[@name='coverImage']/@value='true'">
    95                             <div id="coverImage"><gslib:coverImage/></div>
    96                         </xsl:if>
     92                        <xsl:choose>
     93                            <xsl:when test="/page/pageResponse/format[@type='display']/gsf:option[@name='coverImage']/@value='true'">
     94                                <div id="coverImage" class="visible"><gslib:coverImage/></div>
     95                            </xsl:when>
     96                            <xsl:otherwise>
     97                                <div id="coverImage" class="hidden"><gslib:coverImage/></div>
     98                            </xsl:otherwise>   
     99                        </xsl:choose>
    97100
    98101                        <!-- the contents (if enabled) -->
    99                         <!-- VALUE=<xsl:value-of select="/page/pageResponse/format[@type='display']/gsf:option[@name='TOC']/@value"/> -->
    100                         <xsl:if test="/page/pageResponse/format[@type='display']/gsf:option[@name='TOC']/@value='true'">
    101                             <div id="tableOfContents">
    102                                 <xsl:apply-templates select="documentNode" mode="TOC"/>
    103                             </div>
    104                         </xsl:if>
     102                        <xsl:choose>
     103                            <xsl:when test="/page/pageResponse/format[@type='display']/gsf:option[@name='TOC']/@value='true'">
     104                                <div id="tableOfContents" class="visible">
     105                                    <xsl:apply-templates select="documentNode" mode="TOC"/>
     106                                </div>
     107                            </xsl:when>   
     108                            <xsl:otherwise>
     109                                <div id="tableOfContents" class="hidden">
     110                                    <xsl:apply-templates select="documentNode" mode="TOC"/>
     111                                </div>
     112                            </xsl:otherwise>   
     113                        </xsl:choose>
    105114                    </div>
    106115                </td></tr>
Note: See TracChangeset for help on using the changeset viewer.