diff options
-rw-r--r-- | actions/simplepie/save_group_feed.php | 14 | ||||
-rw-r--r-- | languages/en.php | 4 | ||||
-rw-r--r-- | languages/en.php~ | 14 | ||||
-rw-r--r-- | languages/es.php | 8 | ||||
-rw-r--r-- | languages/es.php~ | 22 | ||||
-rw-r--r-- | views/default/forms/simplepie/save_group_feed.php | 39 | ||||
-rw-r--r-- | views/default/simplepie/group_module.php | 66 | ||||
-rw-r--r-- | views/default/simplepie/group_module.php~ | 108 |
8 files changed, 227 insertions, 48 deletions
diff --git a/actions/simplepie/save_group_feed.php b/actions/simplepie/save_group_feed.php new file mode 100644 index 000000000..556372f98 --- /dev/null +++ b/actions/simplepie/save_group_feed.php @@ -0,0 +1,14 @@ +<?php + +$group = get_entity((int)get_input('group_guid')); +$feed_url = get_input('feed_url'); + +if (!simplepie_is_url($feed_url)) { + register_error (elgg_echo("simplepie:invalid_url")); + forward(REFERER); +} + +if (!$group || !$group->canEdit() || !elgg_instanceof($group, 'group')) { + forward(REFERER); +} +$group->feed_url = $feed_url; diff --git a/languages/en.php b/languages/en.php index 082b4c485..a22316863 100644 --- a/languages/en.php +++ b/languages/en.php @@ -1,5 +1,4 @@ <?php
-
$english = array(
'simplepie:widget' => 'RSS Feed',
'simplepie:description' => 'Add an external blog to your profile',
@@ -11,8 +10,5 @@ $english = array( 'simplepie:post_date' => 'Include post date',
'simplepie:postedon' => 'Posted on',
'simplepie:invalid_url' => 'Invalid url, copy it from the navigation bar please',
-
);
-
add_translation("en", $english);
-
diff --git a/languages/en.php~ b/languages/en.php~ new file mode 100644 index 000000000..a22316863 --- /dev/null +++ b/languages/en.php~ @@ -0,0 +1,14 @@ +<?php
+$english = array(
+ 'simplepie:widget' => 'RSS Feed',
+ 'simplepie:description' => 'Add an external blog to your profile',
+ 'simplepie:notset' => 'Feed url is not set',
+ 'simplepie:notfound' => 'Cannot find feed. Check the feed url.',
+ 'simplepie:feed_url' => 'Feed URL',
+ 'simplepie:num_items' => 'Number of items',
+ 'simplepie:excerpt' => 'Include excerpt',
+ 'simplepie:post_date' => 'Include post date',
+ 'simplepie:postedon' => 'Posted on',
+ 'simplepie:invalid_url' => 'Invalid url, copy it from the navigation bar please',
+);
+add_translation("en", $english);
diff --git a/languages/es.php b/languages/es.php index 85f24e4a5..d9bd5d2d6 100644 --- a/languages/es.php +++ b/languages/es.php @@ -1,5 +1,4 @@ <?php
-
$spanish = array(
'simplepie:widget' => 'Enlace RSS',
'simplepie:description' => 'Agregar un blog externo',
@@ -12,11 +11,4 @@ $spanish = array( 'simplepie:postedon' => 'Posted on',
'simplepie:invalid_url' => 'Url invalida, copiela desde la barra del navegador por favor',
);
-
add_translation("en", $english);
-
-
-
-
-
-
diff --git a/languages/es.php~ b/languages/es.php~ new file mode 100644 index 000000000..85f24e4a5 --- /dev/null +++ b/languages/es.php~ @@ -0,0 +1,22 @@ +<?php
+
+$spanish = array(
+ 'simplepie:widget' => 'Enlace RSS',
+ 'simplepie:description' => 'Agregar un blog externo',
+ 'simplepie:notset' => 'Enlace RSS no configurado',
+ 'simplepie:notfound' => 'no se encontro el feed. Revisa el feed url.',
+ 'simplepie:feed_url' => 'Feed URL',
+ 'simplepie:num_items' => 'Numero de items',
+ 'simplepie:excerpt' => 'Incluir contenido',
+ 'simplepie:post_date' => 'Incluir fecha del post',
+ 'simplepie:postedon' => 'Posted on',
+ 'simplepie:invalid_url' => 'Url invalida, copiela desde la barra del navegador por favor',
+);
+
+add_translation("en", $english);
+
+
+
+
+
+
diff --git a/views/default/forms/simplepie/save_group_feed.php b/views/default/forms/simplepie/save_group_feed.php new file mode 100644 index 000000000..a3f771586 --- /dev/null +++ b/views/default/forms/simplepie/save_group_feed.php @@ -0,0 +1,39 @@ +<?php +/** + * Simplepie feed reader widget settings + */ + +// set default value + +$url_label = elgg_echo("simplepie:feed_url"); +$url_textbox = elgg_view('input/text', array( + 'name' => 'feed_url', + 'id'=> 'feed_url', + 'value' => $vars['entity']->feed_url, +)); + +$group_field = elgg_view('input/hidden', array( + 'name' => 'group_guid', + 'value' => $vars['entity']->guid, +)); + +$save_button = elgg_view('input/submit', array( + 'value' => elgg_echo('save'), +)); + + + + +echo <<<HTML +<div> + <label for="feed_url">$url_label</label> + $url_textbox + $group_field +</div> +<div> + $save_button +</div> +HTML; + + + diff --git a/views/default/simplepie/group_module.php b/views/default/simplepie/group_module.php index 17b2dba0c..d9860d65f 100644 --- a/views/default/simplepie/group_module.php +++ b/views/default/simplepie/group_module.php @@ -29,68 +29,62 @@ if ($feed_url) { $excerpt = true; $post_date = true; $num_items = 7; - $cache_location = elgg_get_data_path() . '/simplepie_cache/'; if (!file_exists($cache_location)) { mkdir($cache_location, 0777); } - $feed = new SimplePie($feed_url, $cache_location); -// doubles timeout if going through a proxy -//$feed->set_timeout(20); + // doubles timeout if going through a proxy + //$feed->set_timeout(20); + // only display errors to profile owner - -// only display errors to profile owner $num_posts_in_feed = $feed->get_item_quantity(); -if (!$num_posts_in_feed) { - if (elgg_get_logged_in_user_guid() == elgg_get_page_owner_guid()) { - $content .= '<p>' . elgg_echo('simplepie:notfound') . '</p>'; + if (!$num_posts_in_feed) { + if (elgg_get_logged_in_user_guid() == elgg_get_page_owner_guid()) { + $content .= '<p>' . elgg_echo('simplepie:notfound') . '</p>'; + } } -} -// don't display more feed items than user requested + // don't display more feed items than user requested if ($num_items > $num_posts_in_feed) { $num_items = $num_posts_in_feed; } $feed_link = elgg_view('output/url', array( - 'href' => $feed->get_permalink(), - 'text' => $feed->get_title(), -)); + 'href' => $feed->get_permalink(), + 'text' => $feed->get_title(), + )); -// need to center + // need to center $content .= "<h2 class=\"simplepie-heading\">$feed_link</h2>"; $content .= '<ul class="simplepie-list">'; foreach ($feed->get_items(0, $num_items) as $item) { - $item_link = elgg_view('output/url', array( - 'href' => $item->get_permalink(), - 'text' => $item->get_title(), -)); - -if ($excerpt) { - $text = strip_tags($item->get_description(true), $allowed_tags); - $excerpt = elgg_get_excerpt($text); -} - -if ($post_date) { - $item_date_label = elgg_echo('simplepie:postedon'); - $item_date = $item->get_date('j F Y | g:i a'); - $post_date = "$item_date_label $item_date"; -} - - $content .= <<<HTML - + $item_link = elgg_view('output/url', array( + 'href' => $item->get_permalink(), + 'text' => $item->get_title(), + )); + + if ($excerpt) { + $text = strip_tags($item->get_description(true), $allowed_tags); + $excerpt = elgg_get_excerpt($text); + } + + if ($post_date) { + $item_date_label = elgg_echo('simplepie:postedon'); + $item_date = $item->get_date('j F Y | g:i a'); + $post_date = "$item_date_label $item_date"; + } + + $content .= <<<HTML <li class="mbm elgg-item"> <h4 class="mbs">$item_link</h4> <p class="elgg-subtext">$post_date</p> <div class="elgg-content">$excerpt</div> </li> HTML; - - } + } $content .= "</ul>"; - } elgg_pop_context(); diff --git a/views/default/simplepie/group_module.php~ b/views/default/simplepie/group_module.php~ new file mode 100644 index 000000000..bfba96f06 --- /dev/null +++ b/views/default/simplepie/group_module.php~ @@ -0,0 +1,108 @@ +<?php +/** + * Group simplepie:rss module + */ +elgg_load_library('simplepie'); + +$group = elgg_get_page_owner_entity(); + +if ($group->rss_enable != "yes") { + return true; +} + +elgg_push_context('widgets'); + +$allowed_tags = '<a><p><br><b><i><em><del><pre><strong><ul><ol><li><img>'; +$feed_url = $group->feed_url; +$content = ''; + +if ($group->canEdit()) { + $content .= elgg_view_form("simplepie/save_group_feed", array( + 'id' => 'simplepie-form', + 'class' => $feed_url ? 'hidden' : '', + ), $vars); +} + +if ($feed_url) { + +// get widget settings + $excerpt = true; + $post_date = true; + $num_items = 7; + $cache_location = elgg_get_data_path() . '/simplepie_cache/'; + if (!file_exists($cache_location)) { + mkdir($cache_location, 0777); + } + $feed = new SimplePie($feed_url, $cache_location); + + // doubles timeout if going through a proxy + //$feed->set_timeout(20); + // only display errors to profile owner + + $num_posts_in_feed = $feed->get_item_quantity(); + if (!$num_posts_in_feed) { + if (elgg_get_logged_in_user_guid() == elgg_get_page_owner_guid()) { + $content .= '<p>' . elgg_echo('simplepie:notfound') . '</p>'; + } + } + + // don't display more feed items than user requested + if ($num_items > $num_posts_in_feed) { + $num_items = $num_posts_in_feed; +} + + $feed_link = elgg_view('output/url', array( + 'href' => $feed->get_permalink(), + 'text' => $feed->get_title(), +)); + +// need to center + $content .= "<h2 class=\"simplepie-heading\">$feed_link</h2>"; + $content .= '<ul class="simplepie-list">'; + foreach ($feed->get_items(0, $num_items) as $item) { + $item_link = elgg_view('output/url', array( + 'href' => $item->get_permalink(), + 'text' => $item->get_title(), +)); + +if ($excerpt) { + $text = strip_tags($item->get_description(true), $allowed_tags); + $excerpt = elgg_get_excerpt($text); +} + +if ($post_date) { + $item_date_label = elgg_echo('simplepie:postedon'); + $item_date = $item->get_date('j F Y | g:i a'); + $post_date = "$item_date_label $item_date"; +} + + $content .= <<<HTML + +<li class="mbm elgg-item"> + <h4 class="mbs">$item_link</h4> + <p class="elgg-subtext">$post_date</p> + <div class="elgg-content">$excerpt</div> +</li> +HTML; + } + $content .= "</ul>"; +} + +elgg_pop_context(); + +if (!$content) { + $content = '<p>' . elgg_echo('simplepie:none') . '</p>'; +} + +$edit = elgg_view('output/url', array( + 'href' => '#simplepie-form', + 'text' => elgg_echo('edit'), + 'rel' => 'toggle' +)); + +echo elgg_view('groups/profile/module', array( + 'title' => elgg_echo('RSS Group'), + 'content' => $content, + 'all_link' => $edit, +)); + |