Ignore:
Timestamp:
07/15/11 18:03:42 (13 years ago)
Author:
fernando-alberto
Message:

Ticket #1269 - Mergiando revisoes do branch22 de rev4644 ate rev4755

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sandbox/expressoMail1_2/MailArchiver/2.2/expressoMail1_2/js/news_edit.js

    r3178 r4778  
    1 function loadXMLDoc(fname) 
    2 { 
    3         var xmlDoc; 
    4         // code for IE 
    5         if (window.ActiveXObject) 
    6         { 
    7                 xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
    8         } 
    9         // code for Mozilla, Firefox, Opera, etc. 
    10         else if (document.implementation  
    11                         && document.implementation.createDocument) 
    12         { 
    13                 xmlDoc=document.implementation.createDocument("","",null); 
    14         } 
    15         else 
    16         { 
    17                 alert('Your browser cannot handle this script'); 
    18         } 
    19         xmlDoc.async=false; 
    20         xmlDoc.load(fname); 
    21         return(xmlDoc); 
    22 } 
    23  
    241 
    252function cnews_edit() 
    263{ 
    27         this.arrayWin = new Array(); 
    28         this.rssXml; 
     4    this.arrayWin = new Array(); 
     5    this.rssXml; 
     6    this.xtools = new xtools('/expressoMail1_2/'); 
    297} 
    308 
    319cnews_edit.prototype.read_rss = function(val) 
    3210{ 
    33         Element("border_id_0").innerHTML = get_lang('News')+'&nbsp;&nbsp;<font face="Verdana" size="1" color="#505050">[<span id="new_m">&nbsp;</span> / <span id="tot_m"></span>]</font>'; 
    34  
    35         Element("tot_m").innerHTML = 0; 
    36         Element('content_id_0').innerHTML = ''; 
    37         current_folder = "NEWS/"+val; 
    38         openTab.imapBox[0] = "NEWS/"+val; 
    39         this.rssXml = loadXMLDoc('controller.php?action=$this.rss.getContent&url='+escape(val)); 
    40         var xsl = loadXMLDoc('stylesheet/news_read.xsl'); 
    41  
    42         document.getElementById("content_id_0").innerHTML= '<tr class="message_header">'+ 
    43                 '<td width="1%"><input type="checkbox" id="chk_box_select_all_messages" class="checkbox"/></td>'+ 
    44                 '<td width="2%"/><td>   </td><td>   </td><td>  </td>'+ 
    45                 '<td width="16%" align="left">'+get_lang('Who')+'</td>'+ 
    46                 '<td width="50%" align="left">'+get_lang('subject')+'</td>'+ 
    47                 '<td width="17%" align="center">'+get_lang('date')+'</td>'+ 
    48                 '<td width="14%" align="center">'+get_lang('size')+'</td></tr>'; 
    49         // code for IE 
    50         if (window.ActiveXObject) 
    51         { 
    52                 ex=this.rssXml.transformNode(xsl); 
    53                 document.getElementById("content_id_0").innerHTML=ex; 
    54         } 
    55         // code for Mozilla, Firefox, Opera, etc. 
    56         else if (document.implementation && document.implementation.createDocument) 
    57         { 
    58                 xsltProcessor=new XSLTProcessor(); 
    59                 xsltProcessor.importStylesheet(xsl); 
    60                 resultDocument = xsltProcessor.transformToFragment(this.rssXml,document); 
    61                 document.getElementById("content_id_0").appendChild(resultDocument); 
    62                 resizeWindow(); 
    63         } 
    64  
    65         update_menu(); 
    66         var box = Element("tbody_box"); 
    67         if(box.childNodes.length > 1) 
    68                 updateBoxBgColor(box.childNodes); 
    69 } 
    70  
    71 cnews_edit.prototype.read_item = function(item_number){ 
    72         try { 
    73                 var description = this.rssXml.getElementsByTagName('item')[item_number-1].getElementsByTagName('description')[0].firstChild.nodeValue; 
    74         }catch(e){ 
    75                 return; 
    76         } 
    77         var title = this.rssXml.getElementsByTagName('item')[item_number-1].getElementsByTagName('title')[0].firstChild.nodeValue; 
    78         var pubDate = this.rssXml.getElementsByTagName('item')[item_number-1].getElementsByTagName('pubDate')[0].firstChild.nodeValue; 
    79         var link = this.rssXml.getElementsByTagName('item')[item_number-1].getElementsByTagName('link')[0].firstChild.nodeValue; 
    80         var owner = this.rssXml.getElementsByTagName('item')[item_number-1].getElementsByTagName('owner')[0]; 
    81         if (currentTab.toString().indexOf('news_') != -1) 
    82                 delete_border(currentTab); 
    83         var border_id = create_border(title, 'news_'+item_number); 
    84         if(!border_id) 
    85                 return false; 
    86  
    87           openTab.type[border_id] = 2; 
    88  
    89         var toolbarCode = "<div style='background-color: #FFF; font-size: larger;'>"+ 
    90         "<table class='table_message' style='width:100%;'><tr><td>"+(owner != undefined?owner.firstChild.nodeValue:get_lang('nobody'))+", "+pubDate+"</td>"+ 
    91         '<td width="30%" align="left">Marcar como: <span class="message_options">'+get_lang('unseen')+'</span></td>'+ 
    92         '<td nowrap="true" width="30%" align="right"><a target="_blank" href="'+link+'" style class="message_options">'+get_lang('Complete news')+'</a>'; 
    93         if (owner != undefined) 
    94                 toolbarCode += '<span>&nbsp;|&nbsp;</span><span class="message_options">'+get_lang('forward')+'</span><span>&nbsp;|&nbsp;</span>'+ 
    95                                 '<span class="message_options">Responder</span></td>'; 
    96         toolbarCode += '<td nowrap="true" width="40px" align="right">'+ 
    97         ( item_number == 1 ?  '<img style="cursor: default;" src="./templates/default/images/up.gray.button.png">' : 
    98         '<img onclick="news_edit.read_item('+(parseInt(item_number)-1)+')" style="cursor: default;" src="./templates/default/images/up.button.png">')+ 
    99         '<span>&nbsp;</span>'+ 
    100         (this.rssXml.getElementsByTagName('item')[parseInt(item_number)] == undefined ? '<img style="cursor: default;" src="./templates/default/images/down.gray.button.png">' : 
    101         '<img onclick="news_edit.read_item('+(parseInt(item_number)+1)+')" style="cursor: pointer;" src="./templates/default/images/down.button.png">')+ 
    102         "</td></tr></table><h2>"+title+"</h2><br>"+description+"</div>"; 
    103         Element('content_id_'+border_id).innerHTML = toolbarCode; 
    104         resizeWindow(); 
    105 } 
    106  
     11    Element("border_id_0").innerHTML    = get_lang('News')+'&nbsp;&nbsp;<font face="Verdana" size="1" color="#505050">[ <span id="tot_m"></span> ]</font>'; 
     12     
     13    current_folder = "NEWS/"+val; 
     14    openTab.imapBox[0] = "NEWS/"+val; 
     15     
     16    this.rssXml = this.xtools.load('controller.php?action=$this.rss.getContent&url='+escape(val)); 
     17 
     18    var langs =  
     19    { 
     20        'lang_who'      : get_lang('Who'), 
     21        'lang_subject'  : get_lang('subject'), 
     22        'lang_date'     : get_lang('date'), 
     23        'lang_size'     : get_lang('size') 
     24    }; 
     25     
     26    var _div = document.getElementById("content_id_0"); 
     27        _div.innerHTML = this.xtools.parse( this.rssXml, 'stylesheet/news_read.xsl' , langs ); 
     28     
     29    update_menu(); 
     30    var box = Element("tbody_box"); 
     31     
     32    if(box.childNodes.length > 1) 
     33        updateBoxBgColor(box.childNodes); 
     34     
     35    for( var i = 0 ; i < box.childNodes.length ; i++ ) 
     36    { 
     37        if( box.childNodes[i].childNodes[2].getAttribute("convertDate") ) 
     38        { 
     39            box.childNodes[i].childNodes[2].innerHTML = this.dateString(box.childNodes[i].childNodes[2].getAttribute("convertDate")); 
     40        } 
     41    } 
     42     
     43    Element("tot_m").innerHTML = box.childNodes.length - 1 ; 
     44} 
     45 
     46cnews_edit.prototype.read_item = function(item_number) 
     47{ 
     48    try  
     49    { 
     50        var description = this.rssXml.getElementsByTagName('item')[item_number-1].getElementsByTagName('description')[0].firstChild.nodeValue; 
     51    } 
     52    catch(e) 
     53    { 
     54        return; 
     55    } 
     56     
     57    var title = this.rssXml.getElementsByTagName('item')[item_number-1].getElementsByTagName('title')[0].firstChild.nodeValue; 
     58    var pubDate = this.dateString(this.rssXml.getElementsByTagName('item')[item_number-1].getElementsByTagName('pubDate')[0].firstChild.nodeValue); 
     59    var link = this.rssXml.getElementsByTagName('item')[item_number-1].getElementsByTagName('link')[0].firstChild.nodeValue; 
     60    var owner = this.rssXml.getElementsByTagName('item')[item_number-1].getElementsByTagName('owner')[0]; 
     61    if (currentTab.toString().indexOf('news_') != -1) 
     62        delete_border(currentTab); 
     63    var border_id = create_border(title, 'news_'+item_number); 
     64    if(!border_id) 
     65        return false; 
     66 
     67    openTab.type[border_id] = 2; 
     68 
     69    var toolbarCode = "<div style='background-color: #FFF; font-size: larger;'>"+ 
     70                      "<table class='table_message' style='width:100%;'><tr><td>"+(owner != undefined?owner.firstChild.nodeValue:get_lang('nobody'))+", "+pubDate+"</td>"+ 
     71                      '<td width="30%" align="left"></td>'+ 
     72                      '<td nowrap="true" width="30%" align="right"><a target="_blank" href="'+link+'" style class="message_options">'+get_lang('Complete news')+'</a>'; 
     73    if ( owner != undefined ) 
     74        toolbarCode += '<span>&nbsp;|&nbsp;</span><span class="message_options">'+get_lang('forward')+'</span><span>&nbsp;|&nbsp;</span>'+ 
     75        '<span class="message_options">Responder</span></td>'; 
     76    toolbarCode += '<td nowrap="true" width="40px" align="right">'+ 
     77    ( item_number == 1 ?  '<img style="cursor: default;" src="./templates/default/images/up.gray.button.png">' : 
     78        '<img onclick="news_edit.read_item('+(parseInt(item_number)-1)+')" style="cursor: default;" src="./templates/default/images/up.button.png">')+ 
     79    '<span>&nbsp;</span>'+ 
     80    (this.rssXml.getElementsByTagName('item')[parseInt(item_number)] == undefined ? '<img style="cursor: default;" src="./templates/default/images/down.gray.button.png">' : 
     81        '<img onclick="news_edit.read_item('+(parseInt(item_number)+1)+')" style="cursor: pointer;" src="./templates/default/images/down.button.png">')+ 
     82    "</td></tr></table><h2>"+title+"</h2><br>"+description+"</div>"; 
     83    Element('content_id_'+border_id).innerHTML = toolbarCode; 
     84    resizeWindow(); 
     85} 
     86 
     87cnews_edit.prototype.dateString = function(StringDate) 
     88{ 
     89    var _date   = new Date(StringDate); 
     90     
     91    var _day    = ( (_date.getDate()).toString().length > 1 ) ? _date.getDate() : "0" + _date.getDate(); 
     92     
     93    var _month  = _date.getMonth() + 1; 
     94        _month  = ( _month.toString().length > 1 ) ? _month : "0" + _month; 
     95     
     96    var _year   = _date.getFullYear(); 
     97     
     98    return ( _day + "/" + _month + "/" + _year ); 
     99} 
    107100 
    108101cnews_edit.prototype.makeWindow = function(options) 
    109102{ 
    110         _this = this; 
    111  
    112         var el = document.createElement("DIV"); 
    113         el.style.visibility = "hidden"; 
    114         el.style.position = "absolute"; 
    115         el.style.left = "0px"; 
    116         el.style.top = "0px"; 
    117         el.style.width = "0px"; 
    118         el.style.height = "0px"; 
    119         el.id = 'dJSWin_newswin'; 
    120         document.body.appendChild(el); 
    121         el.innerHTML = "<table border=0><tbody><tr>"+ 
    122                 '<td valign="bottom"><input type="text" id="rssEnter" size="40"><input value="'+get_lang('subscribe')+ 
    123                 '" onclick="news_edit.subscribe();" type="button">'+ 
    124                 '<br>Enter de url of RSS service<br>'+ 
    125                 '</td></tr>'+ 
    126                 '<tr><td id="serv_table"></td></tr>'+ 
    127                 "</tbody></table><br>"; 
    128  
    129  
    130         var butt = Element('dJSWin_wfolders_bok') 
    131                 if (!butt){ 
    132                         butt = document.createElement('INPUT'); 
    133                         butt.id = 'dJSWin_wfolders_bok'; 
    134                         butt.type = 'button'; 
    135                         butt.value = get_lang('Close'); 
    136                         el.appendChild(butt); 
    137                 } 
    138         butt.onclick = function () 
    139         { 
    140                 news_edit.arrayWin[el.id].close(); 
    141         } 
    142  
    143  
    144                 _this.showWindow(el); 
    145         } 
    146  
    147         cnews_edit.prototype.showWindow = function (div) 
    148         { 
    149                 if(! div) { 
    150                         alert(get_lang('This list has no participants')); 
    151                         return; 
    152                 } 
    153  
    154                 if(! this.arrayWin[div.id]) 
    155                 { 
    156                         div.style.height = "280px"; 
    157                         div.style.width = "340px"; 
    158                         var title = ":: "+get_lang("News edit")+" ::"; 
    159                         var wHeight = div.offsetHeight + "px"; 
    160                         var wWidth =  div.offsetWidth   + "px"; 
    161                         div.style.width = div.offsetWidth - 5; 
    162  
    163                         win = new dJSWin({ 
    164                                 id: 'win_'+div.id, 
    165                                 content_id: div.id, 
    166                                 width: wWidth, 
    167                                 height: wHeight, 
    168                                 title_color: '#3978d6', 
    169                                 bg_color: '#eee', 
    170                                 title: title, 
    171                                 title_text_color: 'white', 
    172                                 button_x_img: '../phpgwapi/images/winclose.gif', 
    173                                 border: true }); 
    174                         this.arrayWin[div.id] = win; 
    175                         win.draw(); 
    176                 } 
    177                 else { 
    178                         win = this.arrayWin[div.id]; 
    179                 } 
    180                 win.open(); 
    181                 var handlerChannel = function(data){ 
    182                         document.getElementById("serv_table").innerHTML = ''; 
    183                         for(i=0; i < data.length; i++) 
    184                                 document.getElementById("serv_table").innerHTML += "<div><span>"+data[i].name+ 
    185                                 "</span><span></span><img onclick='news_edit.unsubscribe(\""+data[i].rss_url+"\",this)' src='../phpgwapi/templates/default/images/foldertree_trash.png'/></div>"; 
    186                 } 
    187                 cExecute('$this.rss.getChannels',handlerChannel); 
    188         } 
    189         cnews_edit.prototype.unsubscribe = function(url,el){ 
    190                 var rem_handler = function (data){ 
    191                         if (data != "Success") 
    192                                 if (data == "Error") 
    193                                         alert(get_lang("Database Error")); 
    194                                 else 
    195                                         alert(get_lang("Invalid entry")); 
    196                         else 
    197                         { 
    198                                 var pnode = el.parentNode; 
    199                                 pnode.parentNode.removeChild(pnode); 
    200                         } 
    201                 }; 
    202  
    203                 cExecute('$this.rss.removeChannel&url='+escape(url),rem_handler); 
    204         } 
    205         cnews_edit.prototype.subscribe = function(){ 
    206                 var val = Element('rssEnter').value; 
    207                 var rssXml = loadXMLDoc('controller.php?action=$this.rss.getContent&url='+escape(val)); 
    208                 var xsl = loadXMLDoc('stylesheet/news_add.xsl'); 
    209                 newTableEl = document.getElementById("serv_table"); 
    210                 // code for IE 
    211                 if (window.ActiveXObject) 
    212                 { 
    213                         ex=rssXml.transformNode(xsl); 
    214                         newTableEl.innerHTML='<div id="'+escape(val)+'">'+ex+'</div>'; 
    215                 } 
    216                 // code for Mozilla, Firefox, Opera, etc. 
    217                 else if (document.implementation && document.implementation.createDocument) 
    218                 { 
    219                         xsltProcessor=new XSLTProcessor(); 
    220                                 xsltProcessor.importStylesheet(xsl); 
    221                         resultDocument = xsltProcessor.transformToFragment(rssXml,document); 
    222                         var ndiv = document.createElement('DIV'); 
    223                         ndiv.id = escape(val); 
    224                         ndiv.appendChild(resultDocument); 
    225                         newTableEl.appendChild(ndiv); 
    226                 } 
    227                 var add_handler = function (data){ 
    228                         if (data != "Success") 
    229                                 if (data == "Error") 
    230                                         alert(get_lang("Database Error")); 
    231                                 else 
    232                                         alert(get_lang("Invalid entry")); 
    233                 }; 
    234                 if(!ndiv) 
    235                         var ndiv = document.getElementById(escape(val)); 
    236                 var name = ndiv.childNodes[1].innerHTML; 
    237                 cExecute('$this.rss.addChannel&url='+escape(val)+'&name='+name,add_handler); 
    238  
    239         }; 
     103    _this = this; 
     104 
     105    var params =  
     106    { 
     107        'lang_label1'       :   get_lang('Enter the URL of RSS service'), 
     108        'lang_label2'       :   get_lang('List of registered RSS'), 
     109        'lang_subscribe'    :   get_lang('Subscribe')  
     110    }; 
     111 
     112    var el = document.createElement("DIV"); 
     113        el.style.visibility = "hidden"; 
     114        el.style.position = "absolute"; 
     115        el.style.left = "0px"; 
     116        el.style.top = "0px"; 
     117        el.style.width = "0px"; 
     118        el.style.height = "0px"; 
     119        el.id = 'dJSWin_newswin'; 
     120        el.innerHTML = this.xtools.parse( this.xtools.xml('make_window'), 'stylesheet/makeWindow.xsl', params ); 
     121 
     122    document.body.appendChild(el); 
     123     
     124    var butt = Element('dJSWin_wfolders_bok'); 
     125     
     126    if ( !butt ) 
     127    { 
     128        butt = document.createElement('INPUT'); 
     129        butt.style.margin = "3px"; 
     130        butt.id = 'dJSWin_wfolders_bok'; 
     131        butt.type = 'button'; 
     132        butt.value = get_lang('Close'); 
     133        el.appendChild(butt); 
     134    } 
     135     
     136    butt.onclick = function () 
     137    { 
     138        news_edit.arrayWin[el.id].close(); 
     139    } 
     140 
     141    _this.showWindow(el); 
     142} 
     143 
     144cnews_edit.prototype.showWindow = function (div) 
     145{ 
     146    if(! this.arrayWin[div.id]) 
     147    { 
     148        div.style.height = "280px"; 
     149        div.style.width = "340px"; 
     150        var title = "<label style='margin-left:5px;'>:: "+get_lang("News edit")+" ::</label> "; 
     151        var wHeight = div.offsetHeight + "px"; 
     152        var wWidth =  div.offsetWidth   + "px"; 
     153        div.style.width = div.offsetWidth - 5; 
     154 
     155        win = new dJSWin({ 
     156            id: 'win_'+div.id, 
     157            content_id: div.id, 
     158            width: wWidth, 
     159            height: wHeight, 
     160            title_color: '#3978d6', 
     161            bg_color: '#eee', 
     162            title: title, 
     163            title_text_color: 'white', 
     164            button_x_img: '../phpgwapi/images/winclose.gif', 
     165            border: true 
     166        }); 
     167        this.arrayWin[div.id] = win; 
     168        win.draw(); 
     169    } 
     170    else 
     171    { 
     172        win = this.arrayWin[div.id]; 
     173    } 
     174     
     175    win.open(); 
     176     
     177    var handlerChannel = function( data ) 
     178    { 
     179        var _listRss =  document.getElementById("listRSS"); 
     180         
     181        if( data != null ) 
     182        { 
     183            for( var i = 0 ; i < data.length; i++) 
     184            {     
     185                _listRss.innerHTML += "<div>" + 
     186                                        "<img onclick='news_edit.unsubscribe(\""+data[i].rss_url+"\",this);' style='width:16px; height:16px; cursor: pointer;' src='../phpgwapi/templates/default/images/foldertree_trash.png' />" + 
     187                                        "<label style='margin-right: 2px'>"+data[i].name+"</label>" +                 
     188                                       "</div>"; 
     189            } 
     190        } 
     191    } 
     192     
     193    cExecute('$this.rss.getChannels',handlerChannel); 
     194} 
     195cnews_edit.prototype.unsubscribe = function(url,el) 
     196{ 
     197    var rem_handler = function (data) 
     198    { 
     199        if ( data != "Success" ) 
     200        {     
     201            if (data == "Error") 
     202                alert(get_lang("Database Error")); 
     203            else 
     204                alert(get_lang("Invalid entry")); 
     205        } 
     206        else 
     207        { 
     208           el.parentNode.parentNode.removeChild( el.parentNode ); 
     209        } 
     210    }; 
     211 
     212    cExecute('$this.rss.removeChannel&url='+escape(url),rem_handler); 
     213} 
     214cnews_edit.prototype.subscribe = function() 
     215{ 
     216    var newTableEl  = document.getElementById("listRSS"); 
     217    var val         = trim( Element('rssEnter').value ); 
     218     
     219    if( val != "" ) 
     220    { 
     221        this.rssXml = this.xtools.load('controller.php?action=$this.rss.getContent&url='+escape(val)); 
     222 
     223        var params = 
     224        { 
     225            'linkURL' : val 
     226        }; 
     227 
     228        var _div = document.createElement("div"); 
     229            _div.innerHTML = this.xtools.parse( this.rssXml, 'stylesheet/news_add.xsl', params ); 
     230 
     231        var add_handler = function (data) 
     232        { 
     233            if ( data != "Success" ) 
     234            { 
     235                if ( data == "Error" ) 
     236                    alert( get_lang("Database Error") ); 
     237                else 
     238                    alert( get_lang("Invalid entry") ); 
     239            } 
     240            else 
     241            { 
     242                newTableEl.appendChild(_div); 
     243            } 
     244        }; 
     245 
     246        try 
     247        { 
     248            if( _div.childNodes[2].getAttribute("titleRss") ) 
     249            {     
     250                var name = _div.childNodes[2].getAttribute("titleRss"); 
     251 
     252                cExecute('$this.rss.addChannel&url='+escape(val)+'&name='+name,add_handler); 
     253            } 
     254        } 
     255        catch(e){ } 
     256    } 
     257 
     258}; 
    240259 
    241260/* Build the Object */ 
Note: See TracChangeset for help on using the changeset viewer.