- Timestamp:
- 07/15/11 18:03:42 (13 years ago)
- 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 IE5 if (window.ActiveXObject)6 {7 xmlDoc=new ActiveXObject("Microsoft.XMLDOM");8 }9 // code for Mozilla, Firefox, Opera, etc.10 else if (document.implementation11 && document.implementation.createDocument)12 {13 xmlDoc=document.implementation.createDocument("","",null);14 }15 else16 {17 alert('Your browser cannot handle this script');18 }19 xmlDoc.async=false;20 xmlDoc.load(fname);21 return(xmlDoc);22 }23 24 1 25 2 function cnews_edit() 26 3 { 27 this.arrayWin = new Array(); 28 this.rssXml; 4 this.arrayWin = new Array(); 5 this.rssXml; 6 this.xtools = new xtools('/expressoMail1_2/'); 29 7 } 30 8 31 9 cnews_edit.prototype.read_rss = function(val) 32 10 { 33 Element("border_id_0").innerHTML = get_lang('News')+' <font face="Verdana" size="1" color="#505050">[<span id="new_m"> </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> | </span><span class="message_options">'+get_lang('forward')+'</span><span> | </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> </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')+' <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 46 cnews_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> | </span><span class="message_options">'+get_lang('forward')+'</span><span> | </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> </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 87 cnews_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 } 107 100 108 101 cnews_edit.prototype.makeWindow = function(options) 109 102 { 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 144 cnews_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 } 195 cnews_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 } 214 cnews_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 }; 240 259 241 260 /* Build the Object */
Note: See TracChangeset
for help on using the changeset viewer.