Changeset 24243

Show
Ignore:
Timestamp:
08.07.2011 14:01:45 (9 years ago)
Author:
sjb48
Message:

Oran code for supporting format changes to document.

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

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>