Changeset 3018 for trunk


Ignore:
Timestamp:
04/13/10 02:13:32 (10 years ago)
Author:
jukka
Message:

Refactored adding pieces to webpages to use jQuery. Nothing dramatic yet, mut easier to expand than previous one.

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LargeSectionFolder.py

    r3013 r3018  
    728728 
    729729 
    730     def js_queryForPieces(self, keyword): 
     730    def js_queryForPieces(self, keyword='', search_type='image'): 
    731731        """ javascript is querying for pieces that are images """ 
    732732        # when this method is called by javascript, all arguments are packed to string 'keyword' 
    733733        # typical value for keyword: 'foobar,audio=False' 
    734         keywords=keyword.split(',') 
    735         keyword=keywords[0] 
    736         search_type=keywords[1] 
    737734        result = [] 
    738735        q = {'SearchableText': keyword,  
  • trunk/skins/lemill/lemill_content_add.cpt

    r3012 r3018  
    7777                    <div class="templateicon"> 
    7878                        <a href="javascript:next('upload')"> 
    79                             <img src="images/content_media_piece.png" width="120" height="120" border="0" /> 
     79                            <img src="images/default_media_piece.png" width="120" height="120" border="0" /> 
    8080                        </a> 
    8181                    </div> 
     
    9292                    <div class="templateicon"> 
    9393                        <a href="createObject?type_name=LeMillReference"> 
    94                             <img src="images/content_reference.png" width="120" height="120" border="0" /> 
     94                            <img src="images/default_reference.png" width="120" height="120" border="0" /> 
    9595                        </a> 
    9696                    </div> 
  • trunk/skins/lemill/master.css

    r3014 r3018  
    11201120    float:left; 
    11211121    width:130px; 
    1122     height:175px; 
     1122    height:155px; 
    11231123    padding: 0; 
    11241124    margin: 0; 
    1125     border: 1px solid #cccccc; 
    1126 } 
     1125    border: 1px solid #bbbbbb; 
     1126    background-color: #ffffff; 
     1127} 
     1128 
     1129.piece_chooser dl:hover { background-color: #ddddff; } 
     1130 
    11271131.piece_chooser dt { 
    1128     height:120px; 
     1132    height:100px; 
    11291133    vertical-align: bottom; 
    11301134    text-align:center; 
     
    11331137.piece_chooser dd { 
    11341138    padding: .2em; 
     1139    font-size: 80%; 
    11351140    margin: 0; 
    11361141    height:55px; 
     
    11381143    text-align:center; 
    11391144} 
    1140 .contrast span { 
     1145 
     1146.contrast span, b.contrast { 
    11411147    color:white; 
    11421148    background:gray; 
  • trunk/skins/lemill/master.js

    r3014 r3018  
    329329var config_values = new Object; 
    330330 
    331 function getConfig(key) { 
    332      
     331function getConfig(key) {     
    333332    if ( !config_values[key] ) 
    334333        $('#dataisland').find('config').each(function(){ 
     
    338337} 
    339338 
    340 function search_for_pieces(event, index, search_type) 
    341 { 
    342     results_box_ID = 'piece-search-results-'+index; // =piece-search-results 
    343  
    344     div = document.getElementById(results_box_ID); 
    345     div.style.display = 'block'; 
    346  
    347     search_box_id = 'piece-search-'+index; // =piece-search- 
    348     val = document.getElementById(search_box_id).value; 
    349     if (!val) { 
    350         return; 
    351     }     
     339 
     340function search_for_pieces(event, index, search_type){ 
     341    $('#piece-search-results-'+index).slideDown(); 
     342    val=$('#piece-search-'+index).attr("value") 
     343    if (!val) return;        
     344    $('#piece-search-results-'+index+' > b').text('Please wait while we process your query'); 
     345    $.ajax({ url: "js_queryForPieces", data:{keyword:val, search_type:search_type}, dataType:'text', success:  
     346        function(data){     
     347            pieces = eval(data); 
     348            if (pieces.length==0){ 
     349                $('#piece-search-results-'+index+' > b').text('No results found'); 
     350                return ; 
     351            }     
     352            div=$('#piece-search-results-'+index+'-body'); 
     353            for ( var i=0; i<pieces.length; i++)  
     354            { 
     355                htm=''; 
     356                piece=pieces[i]; 
     357                // pseudometadata = [r.UID, cover_url, r.Title, r.getPiece_type, image_url] 
     358                pt=piece[3]; 
     359                thumb=piece[1]; 
     360                title=piece[2]; 
     361                div.append('<dl><dt><img src="'+thumb+'" /></dt><dd>'+title+'</dd></dl>'); 
     362                dl=div.find('dl').last(); 
     363                dl.data({'data':piece, 'index':index}); 
     364                if (pt=='image'){ 
     365                    dl.click(insert_image); 
     366                } else if (pt=='cover_image'){ 
     367                    dl.click(insert_coverimage); 
     368                } else { 
     369                    dl.click(insert_media); 
     370                };                     
     371            } 
     372            div.slideDown(); 
     373            $('#piece-search-results-'+index+' > b').text('Found '+pieces.length+' media pieces.'); 
     374 
     375        }}); 
     376} 
     377 
     378function insert_image(){ 
     379    data=$(this).data()['data']; 
     380    index=$(this).data()['index']; 
     381    image_url = data[4]; 
     382    uid = data[0]; 
     383    $('#piece-edit-box-'+index).css('backgroundImage','url('+image_url+')'); 
     384    $('#piece-media-box-'+index).hide(); 
     385    $('#piece-controls-edit-'+index).addClass('contrast'); 
     386    $('#bodyText_'+index).attr('value', uid); 
     387    $('#piece-search-results-'+index).slideUp(); 
     388} 
     389function insert_coverimage(){ 
     390    data=$(this).data()['data']; 
     391    index=$(this).data()['index']; 
     392    cover_url = data[1]; 
     393    uid = data[0]; 
     394    $('#piece-media-box-'+index).html('<img src="'+cover_url+'"><br/>'); 
     395    $('#bodyText_'+index).attr('value', uid); 
     396    $('#piece-search-results-'+index).slideUp();     
     397} 
     398function insert_media(){ 
     399    data=$(this).data()['data']; 
     400    index=$(this).data()['index']; 
     401    image_url = data[4]; 
     402    title=piece[2]; 
     403    cover_url = data[1]; 
     404    uid = data[0]; 
     405    $('#piece-edit-box-'+index).css('backgroundImage','none'); 
     406    $('#piece-media-box-'+index).html('<img src="'+cover_url+'"><br/><b>'+title+'</b>'); 
     407    $('#piece-controls-edit-'+index).removeClass('contrast'); 
     408    $('#bodyText_'+index).attr('value', uid); 
     409    $('#piece-search-results-'+index).slideUp(); 
    352410     
    353     div2 = document.getElementById(results_box_ID + '-body'); 
    354     // Workaround for IE, delete already existing chilld not to get an error 
    355     if (div2.childNodes.length>0) 
    356     { 
    357         div2.removeChild(div2.lastChild); 
    358     } 
    359     div2.innerHTML += '<b>Please wait while we process your query</b>'; 
    360  
    361     call_remote('js_queryForPieces', 'keyword='+val+','+search_type, ParseSearchResults, index, search_type); 
    362 } 
    363  
    364 function ParseSearchResults(response, index, search_type) 
    365 { 
    366     results_box_ID = 'piece-search-results-'+index; 
    367     pieces = eval(response); 
    368     div = document.getElementById(results_box_ID); 
    369     div.style.display = 'block'; 
    370     div = document.getElementById(results_box_ID+'-body'); 
    371     div.innerHTML = ''; 
    372     if (pieces.length==0){ 
    373         div.innerHTML = '<b>No results found</b>';       
    374         return ; 
    375     }     
    376     // Workaround for IE, create new div and append it as a child - the only way it wanted to work 
    377     var t = document.createElement('div'); 
    378     t.innerHTML = '<div class="piece_chooser">'; 
    379     for ( var i=0; i<pieces.length; i++)  
    380     { 
    381         htm='' 
    382         // pseudometadata = [r.UID, cover_url, r.Title, r.getPiece_type, image_url] 
    383         link ='<a href="javascript:chapter_add_multimedia('+index+',\''+pieces[i][0]+'\',\''+pieces[i][1]+'\',\''+pieces[i][2]+'\',\''+pieces[i][3]+'\',\''+pieces[i][4]+'\');">'; 
    384         htm += '<dl><dt>'+link+'<img src="'+pieces[i][1]+'" /></a></dt>'; 
    385         htm += '<dd>'+link+pieces[i][2]+'</a></dd></dl>'; 
    386         t.innerHTML += htm; 
    387     } 
    388     t.innerHTML += '</div>'; 
    389     div.appendChild(t); 
    390 } 
    391  
    392 function chapter_add_multimedia(index, uid, cover_url, title, piece_type, image_url) 
    393 { 
    394     // place image to background 
    395     if (piece_type=='image'){ 
    396         div = document.getElementById('piece-edit-box-'+index); 
    397         div.style.backgroundImage = 'url('+image_url+')';             
    398         div = document.getElementById('piece-media-box-'+index); 
    399         div.innerHTML = ''; 
    400         div = document.getElementById('piece-controls-edit-'+index); 
    401         div.className='contrast'; 
    402     } 
    403     else if (piece_type=='cover_image'){ 
    404     // place coverimage to box 
    405         div = document.getElementById('piece-media-box-'+index); 
    406         div.innerHTML = '<img src="'+cover_url+'"><br/>'; 
    407     } 
    408     else { 
    409     // place coverimage to box 
    410         div = document.getElementById('piece-edit-box-'+index); 
    411         div.style.backgroundImage = 'none';             
    412         div = document.getElementById('piece-media-box-'+index); 
    413         div.innerHTML = '<img src="'+cover_url+'"><br/><b>'+title+'</b>'; 
    414         div = document.getElementById('piece-controls-edit-'+index); 
    415         div.className=''; 
    416     } 
    417  
    418     reference = document.getElementById('bodyText_'+index); 
    419     reference.value = uid; 
    420     div = document.getElementById('piece-search-results-'+index); 
    421     div.style.display = 'none'; 
    422 } 
    423  
    424 /* 
    425 * receiving_end - method to call on server. 
    426 * data - arguments to method 
    427 */ 
    428 function call_remote(receiving_end, data, next_action, attr1, attr2) 
    429 { 
    430     var xmlObj = null; 
    431     if ( window.XMLHttpRequest ) { 
    432         xmlObj = new XMLHttpRequest(); 
    433     } else if ( window.ActiveXObject ) { 
    434         xmlObj = new ActiveXObject("Microsoft.XMLHTTP"); 
    435     } else { 
    436         return; 
    437     } 
    438  
    439     xmlObj.onreadystatechange = function() 
    440     { 
    441         if(xmlObj.readyState == 4) 
    442         { 
    443             next_action(xmlObj.responseText, attr1, attr2); 
    444         } 
    445     } 
    446  
    447     xmlObj.open('POST', receiving_end, true); 
    448     xmlObj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
    449     xmlObj.send(data); 
    450411} 
    451412 
  • trunk/skins/lemill/portlet_macros.pt

    r3013 r3018  
    104104    <div class="tb-portlet" tal:define="url_base python:context.getSectionFolder(bottom=True).absolute_url()"> 
    105105        <ul> 
    106            <li> <tal:loopy repeat="tag d/tags"><a href="" tal:attributes="href python:url_base+'/tags?tag='+tag" tal:content="tag" /><span tal:condition="not:repeat/tag/end" tal:omit-tag="">, </span></tal:loopy></li><span i18n:translate="no_tags" tal:condition="not:d/tags">No tags</span> 
     106           <tal:loopy repeat="tag d/tags"><a href="" tal:attributes="href python:url_base+'/tags?tag='+tag" tal:content="tag" /><span tal:condition="not:repeat/tag/end" tal:omit-tag="">, </span></tal:loopy><span tal:condition="not:d/tags"><span i18n:translate="no_tags">No tags</span> <a href="base_metadata" tal:condition="d/canEdit" tal:attributes="href string:${here_url}/base_metadata" i18n:translate="add">(add)</a></span> 
    107107        </ul> 
    108108    </div>     
  • trunk/skins/lemill/widget_chapter.pt

    r2948 r3018  
    434434        id="piece-search-results-n" 
    435435        tal:attributes="id string:piece-search-results-$index" 
    436         style="width:700px;"> 
    437         <div id="piece-search-results-body" tal:attributes="id string:piece-search-results-$index-body" style="width:700px" class="piece_chooser"> 
     436        style="width:700px;display:none;position:relative;top:-80px;"> 
     437        <b class="contrast">Search status</b> 
     438        <div id="piece-search-results-body" tal:attributes="id string:piece-search-results-$index-body" style="width:700px;display:none" class="piece_chooser"> 
     439         
    438440        </div>                                         
    439         <br style="clear:left" /> 
    440441    </div> 
    441442    </tal:defines> 
  • trunk/version.txt

    r2949 r3018  
    1 2.10 
     12.11 
    22 
Note: See TracChangeset for help on using the changeset viewer.