[openads-Commits] r7736 - in branches/4.6.0_widget_rss: app/js obj

1 view
Skip to first unread message

apas...@adullact.net

unread,
Mar 9, 2018, 12:56:16 PM3/9/18
to openmairi...@googlegroups.com
Author: apasquini
Date: 2018-03-09 18:56:13 +0100 (Fri, 09 Mar 2018)
New Revision: 7736

Modified:
branches/4.6.0_widget_rss/app/js/script.js
branches/4.6.0_widget_rss/obj/om_widget.class.php
Log:
Server_side complet manque finir client

Modified: branches/4.6.0_widget_rss/app/js/script.js
===================================================================
--- branches/4.6.0_widget_rss/app/js/script.js 2018-03-08 16:23:13 UTC (rev 7735)
+++ branches/4.6.0_widget_rss/app/js/script.js 2018-03-09 17:56:13 UTC (rev 7736)
@@ -179,7 +179,15 @@
// Document is ready
$(initBindFocus);

-
+/**
+ * Si mode = server_side alors
+ * Renvoi sur om_widget.class.php::init_class_actions()
+ * et le dom sera construit dans la fonction view_widget_rss()
+ *
+ * Si mode = client_side alors
+ * le dom est construit dans cette fonction
+ *
+ **/
function bind_widget_rss() {
$(".widget_rss").each(function(){
var bloc_html_cible = this.id;
@@ -196,24 +204,52 @@
});
}

- if (side == 'client') {
- var url = $("#"+bloc_html_cible+" .widget-rss-marker").data('url');
+ if (mode == 'client_side') {
+ //
+ var link = $("#"+bloc_html_cible+" .widget-rss-marker").data('urls');
var max_item = $("#"+bloc_html_cible+" .widget-rss-marker").data('max_item');
+ var real_max_item = max_item - 1;
+ var urls = link.split(",");
+ var element = [];
+ var elements = [];

- $.ajax( url ).done(function(data) {
+ urls.forEach(function(url) {
+ $.ajax( url ).done(function(data) {
+ var channel_title=data.getElementsByTagName('channel').item(0).getElementsByTagName('title').item(0).childNodes.item(0).nodeValue;

- var x = data.getElementsByTagName('item');
- for (i=0; i<=max_item; i++) {
- var item_title = x.item(i).getElementsByTagName('title').item(0).childNodes.item(0).nodeValue;
- var item_link = x.item(i).getElementsByTagName('link').item(0).childNodes.item(0).nodeValue;
- var item_desc = x.item(i).getElementsByTagName('description').item(0).childNodes.item(0).nodeValue;
- //ajout a une div existante
- $( "<div id="+ bloc_html_cible +"><h4><a href="+ item_link +">"+ item_title +"</a></h4>"+ item_desc +"</div>" ).appendTo( $("#"+bloc_html_cible+" .widget-rss-marker") );
- }
- });
-
+ element = {
+ "url" : url,
+ "channel_title" : channel_title,
+ };
+
+ // $("#"+bloc_html_cible+" .widget-rss-marker").append("<ul id='ul_"+cpt_ul+"'><h4>"+channel_title+"</h4>");
+
+ var x = data.getElementsByTagName('item');
+ for (i=0; i<=real_max_item; i++) {
+ var item_title = x.item(i).getElementsByTagName('title').item(0).childNodes.item(0).nodeValue;
+ var item_link = x.item(i).getElementsByTagName('link').item(0).childNodes.item(0).nodeValue;
+ var item_desc = x.item(i).getElementsByTagName('description').item(0).childNodes.item(0).nodeValue;
+
+ element['items', i] = {
+ "title" : item_title,
+ "link" : item_link,
+ "description" : item_desc,
+ };
+
+
+ // $("#"+bloc_html_cible+" .widget-rss-marker ul#ul_"+cpt_ul).append("<li><a href="+item_link+" target=_blank><h5>"+item_title+"</h5></a><p>"+item_desc+"</p></li>")
+
+ }
+ elements.push(element);
+ // $("#"+bloc_html_cible+" .widget-rss-marker").append("</ul>");
+ });
+
+ });
+ elements.forEach(function(elt) {
+ //$("#"+bloc_html_cible+" .widget-rss-marker").append("<ul><h4>"+elt['channel_title']+"</h4>");
+ });
+
}
-
});
}


Modified: branches/4.6.0_widget_rss/obj/om_widget.class.php
===================================================================
--- branches/4.6.0_widget_rss/obj/om_widget.class.php 2018-03-08 16:23:13 UTC (rev 7735)
+++ branches/4.6.0_widget_rss/obj/om_widget.class.php 2018-03-09 17:56:13 UTC (rev 7736)
@@ -1598,15 +1598,22 @@

/**
* WIDGET DASHBOARD - rss
- * @return void
- */
+ * Cette fonction gère l'affichage du widget rss
+ * elle est composé de 3 arguments
+ * - urls (l'urls des flux rss séparé par une virgule)
+ * - mode (le mode que doit utilisé le widget soit server_side donc
+ * uniquement sur server, soit client_side avec une récuperation des informations en js)
+ * - max_item (renseigne le nombre d'information du flux a afficher)
+ *
+ * Si mode = server_side alors
+ * le dom sera construit dans view_widget_rss()
+ *
+ * Si mode = client_side alors
+ * le dom sera construit dans script.js::bind_widget_rss()
+ *
+ * @return void
+ */
function display_widget_rss($content = null, $id) {
- /**
- * Ce widget est configurable via l'interface Web. Lors de la création
- * du widget dans le paramétrage il est possible de spécifier l'options suivantes :
- * - url
- * - element_id
- */
$params = array("urls", "mode", "max_item");

$arguments = $this->get_arguments($content, $params);
@@ -1613,25 +1620,25 @@

$sql_template = "
SELECT om_dashboard.om_widget
- FROM %s.om_dashboard %s
+ FROM %som_dashboard
WHERE om_dashboard.om_dashboard=%s;
- "
+ ";
$sql = sprintf($sql_template, DB_PREFIXE, $id);

+ $row = $this->f->db->getone($sql);
$this->f->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE);
$this->f->isDatabaseError($row);
-
- if $arguments["mode"] === "server_side" {
+ if ($arguments["mode"] === "server_side") {
$widget_template = "
- <div class='widget-rss-marker' data-id_widget='%s' data-mode='%s'/>
+ <div class='widget-rss-marker' data-id_widget='%d' data-mode='%s'/></div>
";
- sprintf($widget_template, $row, $arguments['mode'])
+ echo sprintf($widget_template, $row, $arguments['mode']);
}
- elseif $arguments["mode"] === "client_side" {
+ if ($arguments["mode"] === "client_side") {
$widget_template = "
- <div class='widget-rss-marker' data-id_widget='%s' data-mode='%s' data-url='%s' data-max_item='%s'/>
+ <div class='widget-rss-marker' data-id_widget='%d' data-mode='%s' data-urls='%s' data-max_item='%s'/></div>
";
- sprintf($widget_template, $row, $arguments['mode'], $arguments['url'], $arguments['max_item'])
+ echo sprintf($widget_template, $row, $arguments['mode'], $arguments['urls'], $arguments['max_item']);
}
}

@@ -1638,100 +1645,58 @@


/**
- * WIDGET DASHBOARD - rss si choix synchrone alors
+ * WIDGET DASHBOARD
+ * Création du DOM pour le cas server_side
*
+ *
* @return void
*/
function view_widget_rss() {
$content = $this->getVal('arguments');
- /**
- * Ce widget est configurable via l'interface Web. Lors de la création
- * du widget dans le paramétrage il est possible de spécifier l'options suivantes :
- * - url
- * - side
- */
+
// Liste des paramètres
$params = array("urls", "mode", "max_item");

// Formatage des arguments reçus en paramètres
$arguments = $this->get_arguments($content, $params);
+ //détermine le nombre de flux rss
+ $urls=explode(',', $arguments['urls']);

- //determine quel extension est utilisé pour le flux RSS
- $path_parts = pathinfo($arguments['url']);
+ //On retire 1 à la valeur de max_item car nous bouclons à partir de 0
+ $real_max_item=$arguments['max_item'] - 1;

- //fonctionne pour RSS 2.0 tout le if fonctionne
- if ( $path_parts['extension'] == 'xml'){
-
+ //Pour chaque url
+ foreach ($urls as $url) {
$xmlDoc = new DOMDocument();
- $xmlDoc->load($arguments['url']);
+ $xmlDoc->load($url);

- $x=$xmlDoc->getElementsByTagName('item');
- for ($i=0; $i<=2; $i++) {
+ $channel_title=$xmlDoc->getElementsByTagName('channel')->item(0)->getElementsByTagName('title')->item(0)->childNodes->item(0)->nodeValue;

- $item_title=$x->item($i)->getElementsByTagName('title')->item(0)->childNodes->item(0)->nodeValue;
- $item_link=$x->item($i)->getElementsByTagName('link')->item(0)->childNodes->item(0)->nodeValue;
- $item_desc=$x->item($i)->getElementsByTagName('description')->item(0)->childNodes->item(0)->nodeValue;
- echo ("<div id=\"rss\" data-href='" . $arguments['url'] . "'><h4><a href=". $item_link .">". $item_title ."</a></h4>". $item_desc ."</div>");
- }
- }
+ echo "<ul>";

- // A répeter autaat de fois que 'URL'
- // <h4>Titre du feed</h4>
- // <ul>
- // <li> // autnat que de max_item
- // <a href="item link">
- // <h5>item title</h5>
- // <p>item desc</>
- // </a>
- // </li>
- // </ul>
+ $content_title_channel="<h4>%s</h4>";
+ echo sprintf($content_title_channel, $channel_title);

- // //tentative avec ATOM probleme au niveau du load.
- // if ( $path_parts['extension'] == 'atom.xml'){
- // $xmlDoc = new DOMDocument();
- // $xmlDoc->load($arguments['url']);
+ $x=$xmlDoc->getElementsByTagName('item');
+ for ($i=0; $i<=$real_max_item; $i++) {
+ $item_title=$x->item($i)->getElementsByTagName('title')->item(0)->childNodes->item(0)->nodeValue;
+ $item_link=$x->item($i)->getElementsByTagName('link')->item(0)->childNodes->item(0)->nodeValue;
+ $item_desc=$x->item($i)->getElementsByTagName('description')->item(0)->childNodes->item(0)->nodeValue;

- // $x=$xmlDoc->getElementsByTagName('entry');
-
-
- // for ($i=0; $i<=2; $i++) {
- // $item_title=$x->item($i)->getElementsByTagName('title')->item(0)->childNodes->item(0)->nodeValue;
- // $item_link=$x->item($i)->getElementsByTagName('link')->item(0)->childNodes->item(0)->nodeValue;
- // $item_desc=$x->item($i)->getElementsByTagName('description')->item(0)->childNodes->item(0)->nodeValue;
- // echo ("<div id=\"rss\" data-href='" . $arguments['url'] . "'><h4><a href=". $item_link .">". $item_title ."</a></h4>". $item_desc ."</div>");
- // }
- // }
+ $content_flux_template = "
+ <li>
+ <a href=%s target=_blank>
+ <h5>%s</h5>
+ </a>
+ <p>%s</>
+ </li>
+ ";
+ echo sprintf($content_flux_template, $item_link, $item_title, $item_desc);
+ }
+ echo "</ul>";
+ }
+ }

- // //tentative pour le flux rdf mais probleme au niveau de l'utilisation file_get_content (retourne false ce qui indique un probleme)
- // if($path_parts['extension'] == '' || $path_parts['extension'] == null ){
- // $getContents = file_get_contents($arguments['url']);
- // var_dump($getContents);
- // // delete all rdf: values to manipulate input with SimpleXml object
- // $rdf_replace = str_replace("rdf:", "", $getContents);
- // $arrXml = new SimpleXmlElement($rdf_replace);
- // $returnHtml = '<ul>';
- // foreach($arrXml->item as $entry){
- // $returnHtml .= "<li><a href='".$entry->link."' title='".$entry->title."' target='_blank'>" . $entry->title . "</a></li>";
- // }
- // $returnHtml .= '</ul>';
- // }
-
- // //get elements from "<channel>"
- // $channel=$xmlDoc->getElementsByTagName('channel')->item(0);
- // //recup du title
- // $channel_title = $channel->getElementsByTagName('title')
- // ->item(0)->childNodes->item(0)->nodeValue;
- // //recup du link
- // $channel_link = $channel->getElementsByTagName('link')
- // ->item(0)->childNodes->item(0)->nodeValue;
- // //recup de la description
- // $channel_desc = $channel->getElementsByTagName('description')
- // ->item(0)->childNodes->item(0)->nodeValue;
-
- //get and output "<item>" elements
-
- }
-
/**
* Définition des actions disponibles sur la classe.
*

Reply all
Reply to author
Forward
0 new messages