summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlessandro Cosentino <cosenal@gmail.com>2012-08-25 19:14:08 -0400
committerAlessandro Cosentino <cosenal@gmail.com>2012-08-25 19:14:08 -0400
commitc94b02a1150745fe9d62fcf351caa125fb4a1204 (patch)
treeaef0cffc29351d97c24fa12f4e2d79319f776943
parentca6aa3b464940cd0a012571552a4a7e9897cb35d (diff)
opml exporter. invariant test needs to be done with opml importer
-rw-r--r--css/news.css4
-rw-r--r--index.php1
-rw-r--r--js/jquery.onscreen.js22
-rw-r--r--js/news.js13
-rw-r--r--js/settings.js7
-rw-r--r--opmlexporter.php65
6 files changed, 86 insertions, 26 deletions
diff --git a/css/news.css b/css/news.css
index 007a917a2..3775c6599 100644
--- a/css/news.css
+++ b/css/news.css
@@ -181,6 +181,7 @@ div.add_parentfolder {
#feeds li#selected_feed {
background-color: #ffffff !important;
+ font-style: oblique;
}
#feeds li.feed.updating {
@@ -198,6 +199,7 @@ div.add_parentfolder {
#feeds li.feed .feeds_delete,
#feeds li.feed .feeds_edit {
display: none;
+ border: none;
}
#feeds li.feed:hover .unreaditemcounter {
@@ -213,7 +215,7 @@ div.add_parentfolder {
#feeds .feeds_delete {
position: absolute;
- right: 0.1em;
+ right: 0.2em;
background: url('%webroot%/core/img/actions/delete.svg') no-repeat center;
display: none;
padding: 0;
diff --git a/index.php b/index.php
index 71dc0e14f..3a42ff5ac 100644
--- a/index.php
+++ b/index.php
@@ -19,6 +19,7 @@ OCP\App::setActiveNavigationEntry('news');
OCP\Util::addScript('news','news');
OCP\Util::addScript('news','jquery.timeago');
+OCP\Util::addScript('news','jquery.onscreen');
OCP\Util::addStyle('news','news');
OCP\Util::addStyle('news','settings');
diff --git a/js/jquery.onscreen.js b/js/jquery.onscreen.js
new file mode 100644
index 000000000..bbd1f3d4d
--- /dev/null
+++ b/js/jquery.onscreen.js
@@ -0,0 +1,22 @@
+// onScreen jQuery plugin v0.2.1
+// (c) 2011 Ben Pickles
+//
+// http://benpickles.github.com/onScreen
+//
+// Released under MIT license.
+;(function($) {
+ $.expr[":"].onScreen = function(elem) {
+ var $window = $(window)
+ var viewport_top = $window.scrollTop()
+ var viewport_height = $window.height()
+ var viewport_bottom = viewport_top + viewport_height
+ var $elem = $(elem)
+ var top = $elem.offset().top
+ var height = $elem.height()
+ var bottom = top + height
+
+ return (top >= viewport_top && top < viewport_bottom) ||
+ (bottom > viewport_top && bottom <= viewport_bottom) ||
+ (height > viewport_height && top <= viewport_top && bottom >= viewport_bottom)
+ }
+})(jQuery);
diff --git a/js/news.js b/js/news.js
index 2b18ffb59..b1c1fc8ce 100644
--- a/js/news.js
+++ b/js/news.js
@@ -622,7 +622,7 @@ function bindItemEventListeners(){
$('#feed_items li.star').click(function(){
var $item = $(this).parent().parent().parent('.feed_item');
var itemId = $item.data('id');
- var handler = new News.ItemStatusHandler(itemId);
+ var handler = new News.ItemStatusHandler(itemId);
handler.toggleImportant();
});
@@ -630,13 +630,13 @@ function bindItemEventListeners(){
$('#feed_items .keep_unread').click(function(){
var $item = $(this).parent().parent().parent('.feed_item');
var itemId = $item.data('id');
- var handler = new News.ItemStatusHandler(itemId);
+ var handler = new News.ItemStatusHandler(itemId);
handler.toggleKeepUnread();
});
$('#feed_items .keep_unread input[type=checkbox]').click(function(){
var $item = $(this).parent().parent().parent().parent('.feed_item');
var itemId = $item.data('id');
- var handler = new News.ItemStatusHandler(itemId);
+ var handler = new News.ItemStatusHandler(itemId);
handler.toggleKeepUnread();
});
@@ -726,7 +726,12 @@ $(document).ready(function(){
});
$('#feed_items').scrollTop(0);
-
+
+ $(document).keydown(function(e) {
+ if ((e.keyCode || e.which) == 74) { // 'j' key shortcut
+
+ }
+ });
});
/**
diff --git a/js/settings.js b/js/settings.js
index 6709884ec..b10f3c4fe 100644
--- a/js/settings.js
+++ b/js/settings.js
@@ -53,8 +53,11 @@ News.Settings={
});
},
exportOpml:function(button){
- //TODO
- alert("test");
+ $(button).attr("disabled", true);
+ $(button).prop('value', t('news', 'Downloading...'));
+ document.location.href = OC.linkTo('news', 'opmlexporter.php');
+ $(button).prop('value', t('news', 'Download'));
+ $(button).attr("disabled", false);
}
}
diff --git a/opmlexporter.php b/opmlexporter.php
index 86b8bee81..e247056c6 100644
--- a/opmlexporter.php
+++ b/opmlexporter.php
@@ -11,25 +11,52 @@
*
*/
-class OPMLExporter {
+function feedsToXML($data, $xml_el, $dom){
-
- public static function feedToXML(OCA\News\Feed $feed){
-
- }
-
- /**
- * @brief
- */
- public static function export(OCA\News\Collection $data){
- foreach($children as $child) {
- if ($child instanceOf OCA\News\Folder){
- }
- elseif ($child instanceOf OCA\News\Feed) { //onhover $(element).attr('id', 'newID');
- }
- else {
- //TODO:handle error in this case
- }
+ foreach($data as $collection) {
+ $outline_el = $dom->createElement('outline');
+ if ($collection instanceOf OCA\News\Folder){
+ $outline_el->setAttribute('title', $collection->getName());
+ $outline_el->setAttribute('text', $collection->getName());
+ feedsToXML($collection->getChildren(), $outline_el, $dom);
+ }
+ elseif ($collection instanceOf OCA\News\Feed) {
+ $outline_el->setAttribute('title', $collection->getTitle());
+ $outline_el->setAttribute('text', $collection->getTitle());
+ $outline_el->setAttribute('type', 'rss');
+ $outline_el->setAttribute('xmlUrl', $collection->getUrl());
}
+ $xml_el->appendChild( $outline_el );
}
-} \ No newline at end of file
+}
+
+$l = OC_L10N::get('news');
+
+OCP\User::checkLoggedIn();
+OCP\App::checkAppEnabled('news');
+
+$userid = OCP\USER::getUser();
+$foldermapper = new OCA\News\FolderMapper($userid);
+$allfeeds = $foldermapper->childrenOfWithFeeds(0);
+
+header('Content-Type: application/x.opml+xml');
+header('Content-Disposition: inline; filename=owncloud_news_subscriptions.xml');
+
+$dom = new DomDocument('1.0', 'UTF-8');
+$dom->formatOutput = true;
+
+$opml_el = $dom->createElement('opml');
+$opml_el->setAttribute('version', '2.0');
+
+$head_el = $dom->createElement('head');
+$title_el = $dom->createElement('title', $userid . ' ' . $l->t('subscriptions in ownCloud - News'));
+$head_el->appendChild( $title_el );
+$opml_el->appendChild( $head_el );
+
+$body_el = $dom->createElement('body');
+feedsToXML($allfeeds, $body_el, $dom);
+
+$opml_el->appendChild( $body_el );
+$dom->appendChild( $opml_el );
+
+echo $dom->saveXML(); \ No newline at end of file