source: sandbox/2.4.2-expresso2/expressoMail1_2/js/news_edit.js @ 3178

Revision 3178, 8.3 KB checked in by amuller, 14 years ago (diff)

Ticket #1158 - Implementação do leitor de RSS

  • Property svn:executable set to *
Line 
1function 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
24
25function cnews_edit()
26{
27        this.arrayWin = new Array();
28        this.rssXml;
29}
30
31cnews_edit.prototype.read_rss = function(val)
32{
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
71cnews_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
107
108cnews_edit.prototype.makeWindow = function(options)
109{
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        };
240
241/* Build the Object */
242var news_edit;
243news_edit = new cnews_edit();
Note: See TracBrowser for help on using the repository browser.