Changeset 501


Ignore:
Timestamp:
07/20/06 16:22:26 (13 years ago)
Author:
vahur
Message:

worked on multimedia page and javascript.

Location:
trunk
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/MultimediaMaterial.py

    r496 r501  
    4242    ), 
    4343 
    44 #    PieceField('mediapieces', 
    45 #        relationship = 'uses', 
    46 #        piece_types = 'all', 
    47 #        widget = PieceWidget( 
    48 #            label = 'Add media', 
    49 #            ), 
    50 #    ), 
     44    PieceField('mediapieces', 
     45        relationship = 'uses', 
     46        piece_types = 'all', 
     47        widget = PieceWidget( 
     48            label = 'Add media', 
     49            ), 
     50    ), 
    5151 
    5252 
  • trunk/config.py

    r499 r501  
    142142    'multimediapage' : { 
    143143        'title'  : 'Multimedia page - text with multimedia elements', 
    144         'fields' : ['title', 'bodyText'], 
     144        'fields' : ['title', 'bodyText', 'mediapieces'], 
    145145        'meta_type' : 'MultimediaMaterial', 
    146146        }, 
  • trunk/skins/lemill/base_edit.cpt.metadata

    r472 r501  
    1414# This is for the special image ref stuff in Material 
    1515action.success.PresentationMaterial.uploadSlide = traverse_to:string:content_edit 
     16action.success.MultimediaMaterial.uploadSlide = traverse_to:string:content_edit 
  • trunk/skins/lemill/js_helpers.js

    r481 r501  
    136136 
    137137/* adds one more slide */ 
    138 function add_one_more_slides() 
    139 { 
    140     box = document.getElementById('one-presentation-slide-0'); 
     138 
     139var config_values = new Object; 
     140function parseConfig() { 
     141    dataelem = document.getElementById('dataisland'); 
     142    confs = dataelem.getElementsByTagName('config'); 
     143    for (var c=0; c<confs.length; c++) 
     144    { 
     145        config_values[confs[c].getAttribute('id')] = confs[c].childNodes[0].nodeValue; 
     146    } 
     147} 
     148 
     149function getConfig(key) { 
     150     
     151    if ( !config_values[key] ) 
     152        parseConfig(); 
     153    return config_values[key]; 
     154} 
     155 
     156function add_one_more_slides(id_to_clone) 
     157{ 
     158    var cloning_id = getConfig('base_id_to_clone'); 
     159    if (id_to_clone) 
     160        cloning_id = id_to_clone; 
     161    box = document.getElementById(cloning_id+'0'); 
    141162    number = 0; 
    142163    /* probe for a next free number */ 
    143164    for (var i=0; i<99; i++) { 
    144         if (!document.getElementById('one-presentation-slide-'+i)) { 
     165        if (!document.getElementById(cloning_id+i)) { 
    145166            number = i; 
    146167            break; 
     
    149170    inserHere = document.getElementById('insertHere'); 
    150171    clone = box.cloneNode(true); 
    151     clone.id = 'one-presentation-slide-'+number; 
     172    clone.id = cloning_id+number; 
    152173    inserHere.parentNode.insertBefore(clone, inserHere); 
    153174 
    154     clone = document.getElementById('one-presentation-slide-'+number); 
    155     clone.getElementsByTagName('textarea')[0].id = 'presentation-caption-'+number; 
    156     clone.getElementsByTagName('textarea')[0].name = 'presentation-caption-'+number; 
    157     clone.getElementsByTagName('textarea')[0].innerHTML = ''; 
     175    clone = document.getElementById(cloning_id+number); 
    158176    inps = clone.getElementsByTagName('input'); 
     177    inps_ids_str = getConfig('input_ids'); 
     178    inps_ids = inps_ids_str.split(','); 
    159179    for (var i=0; i<inps.length; i++) 
    160180    { 
    161         if ( inps[i].id == 'presentation-file-0') { 
    162             inps[i].id = 'presentation-file-'+number; 
    163             inps[i].name = 'presentation-file-'+number; 
    164         } 
    165         if (inps[i].id == 'presentation-uploadbutton-0') 
    166             inps[i].id = 'presentation-uploadbutton-'+number; 
    167         if (inps[i].id == 'presentation-search-0') 
    168             inps[i].id = 'presentation-search-'+number; 
    169         if (inps[i].id == 'presentation-piece-0') { 
    170             inps[i].id = 'presentation-piece-'+number; 
    171             inps[i].name = 'presentation-piece-'+number; 
    172             inps[i].value = ''; 
    173         } 
    174         if (inps[i].id == 'presentation-searchbutton-0')  
    175         { 
    176             inps[i].id = 'presentation-searchbutton-'+number; 
    177             inps[i].setAttribute('onclick', 'javascript:search_for_pieces(event, '+number+')'); 
     181        for (var j=0;j<inps_ids.length; j++) 
     182        { 
     183            if (inps[i].id == inps_ids[j]+'0' ) { 
     184                inps[i].id = inps_ids[j]+number; 
     185                if (inps[i].name.substring(0, inps_ids[i].length) == inps_ids[j] ) { 
     186                    inps[i].name = inps_ids[j]+number; 
     187                } 
     188                if (inps[i].type == 'hidden') { 
     189                    inps[i].value = ''; 
     190                } 
     191                if (inps[i].getAttribute('onclick')) 
     192                    if (inps[i].getAttribute('onclick').indexOf('search_for_pieces')>0) { 
     193                        inps[i].setAttribute('onclick', 'javascript:search_for_pieces(event, '+number+')'); 
     194                    } 
     195            } 
    178196        } 
    179197    } 
    180198    divs = clone.getElementsByTagName('div'); 
     199    divs_list = getConfig('div_ids'); 
     200    divs_ids = divs_list.split(','); 
    181201    for (var i=0; i<divs.length; i++) 
    182202    { 
    183         if ( divs[i].id == 'presentation-edit-box-0' ) { 
    184             divs[i].id = 'presentation-edit-box-'+number; 
    185             divs[i].style.backgroundImage = ''; 
    186         } 
    187         if ( divs[i].id == 'presentation-controls-0' ) { 
    188             divs[i].id = 'presentation-controls-'+number; 
     203        for (var j=0;j<divs_ids.length; j++) 
     204        { 
     205            if (divs[i].id == divs_ids[j]+'0' ) { 
     206                divs[i].id = divs_ids[j]+number; 
     207                if ( divs[i].style.backgroundImage ) { 
     208                    divs[i].style.backgroundImage = ''; 
     209                } 
     210            } 
     211        } 
     212    } 
     213    ta = clone.getElementsByTagName('textarea'); 
     214    ta_list = getConfig('textarea_ids'); 
     215    ta_ids = ta_list.split(','); 
     216    for (var i=0; i<ta.length; i++ ) 
     217    { 
     218        for (var j=0;j<ta_ids.length; j++) 
     219        { 
     220            if (ta[i].id == ta_ids[j]+'0') { 
     221                ta[i].id = ta_ids[j]+number; 
     222                ta[i].name = ta_ids[j]+number; 
     223                ta[i].innerHTML = '' 
     224            } 
    189225        } 
    190226    } 
    191227    spans = clone.getElementsByTagName('span'); 
     228    count = getConfig('counter_id'); 
    192229    for (var i=0; i<spans.length; i++) 
    193230    { 
    194         if ( spans[i].id == 'slideNumber' )  
     231        if ( spans[i].id == count )  
    195232            spans[i].textContent = number+1; 
    196233    } 
    197     controls = document.getElementById('presentation-controls-'+number); 
    198     controls.style.display = 'block'; 
     234    id_list = getConfig('display-after-clone'); 
     235    elems_to_show = id_list.split(',') 
     236    for (var i=0; i<elems_to_show.length; i++) { 
     237        elem = document.getElementById(elems_to_show[i]+number); 
     238        if (elem) 
     239            elem.style.display = 'block'; 
     240        //controls = document.getElementById('presentation-controls-'+number); 
     241        //controls.style.display = 'block'; 
     242    } 
    199243} 
    200244 
    201245function search_for_pieces(event, number) 
    202246{ 
    203     val = document.getElementById('presentation-search-'+number).value; 
     247    results_box_ID = getConfig('search-result-box'); 
     248    search_box_base_id = getConfig('search-string-base'); 
     249    val = document.getElementById(search_box_base_id+number).value; 
    204250    if (!val) { 
    205251        return; 
    206252    } 
    207     div = document.getElementById('presentation-search-results'); 
     253    div = document.getElementById(results_box_ID); 
    208254    div.style.display = 'block'; 
    209255    /* 
     
    216262         top = event.pageY; 
    217263    div.style.top = top-250+'px'; 
    218     div2 = document.getElementById('presentation-search-results-body'); 
     264    div2 = document.getElementById(results_box_ID + '-body'); 
    219265    div2.innerHTML = '<b>Please wait while we process your query</b>'; 
    220     call_remote('js_queryForPieces', 'keyword='+val, presentationParseSearchResults, number); 
    221 } 
    222  
    223 function presentationParseSearchResults(response, number) 
     266    call_remote('js_queryForPieces', 'keyword='+val, ParseSearchResults, number); 
     267} 
     268 
     269function ParseSearchResults(response, number) 
    224270{ 
    225271    imgs = eval(response); 
    226     div = document.getElementById('presentation-search-results-body'); 
     272    results_box_ID = getConfig('search-result-box'); 
     273    div = document.getElementById(results_box_ID+'-body'); 
    227274    div.innerHTML = ''; 
    228275    for ( var i=0; i<imgs.length; i++)  
     
    237284function presentation_add_to_slide(number, uid, id) 
    238285{ 
    239     div = document.getElementById('presentation-edit-box-'+number); 
     286    div = document.getElementById(getConfig('target-div-id')+number); 
    240287    div.style.backgroundImage = 'url('+id+'/image_large)'; 
    241     pice = document.getElementById('presentation-piece-'+number); 
     288    pice = document.getElementById(getConfig('piece-referencing-input')+number); 
    242289    pice.value = uid; 
    243     div = document.getElementById('presentation-search-results'); 
     290    div = document.getElementById(getConfig('search-result-box')); 
    244291    div.style.display = 'none'; 
    245292    //controls = document.getElementById('presentation-controls-'+number); 
    246293    //controls.style.display = 'none'; 
     294    if ( getConfig('append-piece-to') )  
     295    { 
     296        getCleanHTML(); 
     297        ta = document.getElementById(getConfig('append-piece-to')); 
     298        ta.value += '<p><img src="'+id+'/image_small" /></p>'; 
     299        setHTML(); 
     300    } 
    247301} 
    248302 
  • trunk/skins/lemill/presentationmaterial_edit.cpt

    r493 r501  
    1414                tal:attributes="action string:${context/absolute_url}/${template/id}" 
    1515                enctype="multipart/form-data"> 
     16                <tal:comment replace="nothing"> 
     17                search-result-box - search div id. have to have div with an id this+'-body' also 
     18                search-string-base - id where to look for a search string 
     19                base_id_to_clone - what id to clone. id+'0' will be cloned 
     20                input_ids - input tags that have their id changed 
     21                counter_id - element id that holds the number like, slide 1 or piece 14 
     22                display-after-clone - will reveal this element 
     23                target-div-id - where to put a piece for displaying 
     24                piece-referencing-input - where to store the piece's uid 
     25                append-piece-to - adds an img to specified tag 
     26                </tal:comment> 
     27 
     28                <dataisland id="dataisland" style="display:none"> 
     29                <config id="search-result-box">presentation-search-results</config> 
     30                <config id="search-string-base">presentation-search-</config> 
     31                <config id="base_id_to_clone">one-presentation-slide-</config> 
     32                <config id="input_ids">presentation-piece-,presentation-file-,presentation-uploadbutton-,presentation-search-,presentation-searchbutton-,</config> 
     33                <config id="div_ids">presentation-controls-,presentation-edit-box-</config> 
     34                <config id="textarea_ids">presentation-caption-,</config> 
     35                <config id="counter_id">slideNumber</config> 
     36                <config id="display-after-clone">presentation-controls-,</config> 
     37                <config id="target-div-id">presentation-edit-box-</config> 
     38                <config id="piece-referencing-input">presentation-piece-</config> 
     39                </dataisland> 
    1640 
    1741                <tal:block tal:define="visibleFields python:context.getTemplate('presentation').get('fields')"> 
  • trunk/skins/lemill/validate_integrity.cpy.metadata

    r475 r501  
    77[actions] 
    88action.success = redirect_to_action:string:view 
     9action.success.MultimediaMaterial.uploadSlide = redirect_to_action:string:edit 
    910action.success.PresentationMaterial.uploadSlide = redirect_to_action:string:edit 
    1011action.success.PresentationMaterial.presentation_form_submit = redirect_to_action:string:metadata 
Note: See TracChangeset for help on using the changeset viewer.