diff --git a/include/functions.php b/include/functions.php
index ac9cce90f04300e2c9c87f163f36b6c6ebe48c32..68271ff732abb495a7ac866a8db049042600631d 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -1,6 +1,6 @@
 <?php
 	define('EXPECTED_CONFIG_VERSION', 26);
-	define('SCHEMA_VERSION', 101);
+	define('SCHEMA_VERSION', 102);
 
 	$fetch_last_error = false;
 	$pluginhost = false;
diff --git a/mobile/mobile-functions.php b/mobile/mobile-functions.php
index ffd7ba80d10b9c91f456c2104be78228ffb84897..65bba55df4e764df11f62fad4b3fdbf8118a357c 100644
--- a/mobile/mobile-functions.php
+++ b/mobile/mobile-functions.php
@@ -349,7 +349,7 @@
 
 		$qfh_ret = queryFeedHeadlines($link, $feed_id, $limit,
 			$view_mode, $is_cat, $search, $search_mode, $match_on,
-			"score DESC, date_entered DESC", $offset);
+			"score DESC, date_entered ".(mobile_get_pref($link, 'REVERSE_HEADLINES') ? 'ASC' : 'DESC'), $offset);
 
 		$result = $qfh_ret[0];
 		$feed_title = $qfh_ret[1];
diff --git a/mobile/mobile.js b/mobile/mobile.js
index 2771a8a40f48abbf9f1fc0f0a07e0dd6b71853cc..3fed3a1d70d332d112d3db42124f0aa4ff24381d 100644
--- a/mobile/mobile.js
+++ b/mobile/mobile.js
@@ -10,7 +10,7 @@ function toggleMarked(id, elem) {
 		toggled = 0;
 	}
 
-	var query = "?op=toggleMarked&id=" + id + "&mark=" + toggled;
+	var query = "op=toggleMarked&id=" + id + "&mark=" + toggled;
 
 	new Ajax.Request(backend, {
 		parameters: query,
@@ -29,7 +29,7 @@ function togglePublished(id, elem) {
 		toggled = 0;
 	}
 
-	var query = "?op=togglePublished&id=" + id + "&pub=" + toggled;
+	var query = "op=togglePublished&id=" + id + "&pub=" + toggled;
 
 	new Ajax.Request(backend, {
 		parameters: query,
@@ -49,7 +49,7 @@ function toggleUnread(id, elem) {
 		toggled = 0;
 	}
 
-	var query = "?op=toggleUnread&id=" + id + "&unread=" + toggled;
+	var query = "op=toggleUnread&id=" + id + "&unread=" + toggled;
 
 	new Ajax.Request(backend, {
 		parameters: query,
@@ -69,7 +69,7 @@ function setPref(elem) {
 		toggled = 0;
 	}
 
-	var query = "?op=setPref&id=" + id + "&to=" + toggled;
+	var query = "op=setPref&id=" + id + "&to=" + toggled;
 
 	new Ajax.Request(backend, {
 		parameters: query,
diff --git a/mobile/prefs.php b/mobile/prefs.php
index 59c2d04aee0c126393725ae99a690a9b780f58b6..6b053dc3b0aafadc6f505c55a82d566bf0e7d560 100644
--- a/mobile/prefs.php
+++ b/mobile/prefs.php
@@ -46,4 +46,9 @@
 	<div class="toggle" id="SORT_FEEDS_UNREAD" onclick="setPref(this)" toggled="<?php echo mobile_pref_toggled($link, "SORT_FEEDS_UNREAD") ?>"><span class="thumb"></span><span class="toggleOn"><?php echo __('ON') ?></span><span class="toggleOff"><?php echo __('OFF') ?></span></div>
 </div>
 
+<div class="row">
+	<label><?php echo __('Reverse headline order (oldest first)') ?></label>
+	<div class="toggle" id="REVERSE_HEADLINES" onclick="setPref(this)" toggled="<?php echo mobile_pref_toggled($link, "REVERSE_HEADLINES") ?>"><span class="thumb"></span><span class="toggleOn"><?php echo __('ON') ?></span><span class="toggleOff"><?php echo __('OFF') ?></span></div>
+</div>
+
 </fieldset>
diff --git a/plugins/owncloud/owncloud.php b/plugins/owncloud/owncloud.php
index e63ff959cbfd42228eb0532c3474e9f20d25b96f..b846241b87efab923466994ee2f4fb0358b9f81d 100644
--- a/plugins/owncloud/owncloud.php
+++ b/plugins/owncloud/owncloud.php
@@ -16,12 +16,57 @@ class OwnCloud extends Plugin {
     $this->host = $host;
 
     $host->add_hook($host::HOOK_ARTICLE_BUTTON, $this);
+    $host->add_hook($host::HOOK_PREFS_TAB, $this);
+  }
+
+  function save() {
+    $owncloud_url = db_escape_string($_POST["owncloud_url"]);
+    $this->host->set($this, "owncloud", $owncloud_url);
+    echo "Value set to $owncloud_url";
   }
 
   function get_js() {
     return file_get_contents(dirname(__FILE__) . "/owncloud.js");
   }
 
+  function hook_prefs_tab($args) {
+    if ($args != "prefPrefs") return;
+
+    print "<div dojoType=\"dijit.layout.AccordionPane\" title=\"".__("Owncloud")."\">";
+
+    print "<br/>";
+
+    $value = $this->host->get($this, "owncloud");
+    print "<form dojoType=\"dijit.form.Form\">";
+
+    print "<script type=\"dojo/method\" event=\"onSubmit\" args=\"evt\">
+           evt.preventDefault();
+           if (this.validate()) {
+               console.log(dojo.objectToQuery(this.getValues()));
+               new Ajax.Request('backend.php', {
+                                    parameters: dojo.objectToQuery(this.getValues()),
+                                    onComplete: function(transport) {
+                                         notify_info(transport.responseText);
+                                    }
+                                });
+           }
+           </script>";
+
+    print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"pluginhandler\">";
+    print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"method\" value=\"save\">";
+    print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"plugin\" value=\"owncloud\">";
+    print "<table width=\"100%\" class=\"prefPrefsList\">";
+        print "<tr><td width=\"40%\">".__("Owncloud url")."</td>";
+	print "<td class=\"prefValue\"><input dojoType=\"dijit.form.ValidationTextBox\" required=\"1\" name=\"owncloud_url\" regExp='^(http|https)://.*' value=\"$value\"></td></tr>";
+    print "</table>";
+    print "<p><button dojoType=\"dijit.form.Button\" type=\"submit\">".__("Save")."</button>";
+
+    print "</form>";
+
+    print "</div>"; #pane
+
+  }
+
   function hook_article_button($line) {
     return "<img src=\"".theme_image($this->link, "plugins/owncloud/owncloud.png")."\"
              style=\"cursor : pointer\" style=\"cursor : pointer\"
@@ -31,21 +76,18 @@ class OwnCloud extends Plugin {
 
   function getOwnCloud() {
     $id = db_escape_string($_REQUEST['id']);
-    
+
     $result = db_query($this->link, "SELECT title, link
 		      FROM ttrss_entries, ttrss_user_entries
 		      WHERE id = '$id' AND ref_id = id AND owner_uid = " .$_SESSION['uid']);
-    
+
     if (db_num_rows($result) != 0) {
       $title = truncate_string(strip_tags(db_fetch_result($result, 0, 'title')),
 			       100, '...');
       $article_link = db_fetch_result($result, 0, 'link');
     }
-    
-    $own_url = "";
-    if (defined('OWNCLOUD_URL')) {
-      $own_url = OWNCLOUD_URL;
-    }
+
+    $own_url = $this->host->get($this, "owncloud");
 
     print json_encode(array("title" => $title, "link" => $article_link,
 			    "id" => $id, "ownurl" => $own_url));
diff --git a/schema/ttrss_schema_mysql.sql b/schema/ttrss_schema_mysql.sql
index d4531308f80c92f2f4bf6757a8f940e081742025..10320b5b7d52e09072b3f37d78fc40b8546e8c6b 100644
--- a/schema/ttrss_schema_mysql.sql
+++ b/schema/ttrss_schema_mysql.sql
@@ -309,7 +309,7 @@ create table ttrss_tags (id integer primary key auto_increment,
 
 create table ttrss_version (schema_version int not null) ENGINE=InnoDB DEFAULT CHARSET=UTF8;
 
-insert into ttrss_version values (101);
+insert into ttrss_version values (102);
 
 create table ttrss_enclosures (id integer primary key auto_increment,
 	content_url text not null,
@@ -455,6 +455,8 @@ insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) valu
 
 insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_ENABLED_PLUGINS', 2, '', '', 1);
 
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_MOBILE_REVERSE_HEADLINES', 1, 'false', '', 1);
+
 update ttrss_prefs set access_level = 1 where pref_name in ('ON_CATCHUP_SHOW_NEXT_FEED',
 	'SORT_HEADLINES_BY_FEED_DATE',
 	'VFEED_GROUP_BY_FEED',
diff --git a/schema/ttrss_schema_pgsql.sql b/schema/ttrss_schema_pgsql.sql
index f52d4191d30fe30384cc65368daf0b156d7a5d62..33c32d181b483ec675831405836d9c31a9842d40 100644
--- a/schema/ttrss_schema_pgsql.sql
+++ b/schema/ttrss_schema_pgsql.sql
@@ -257,7 +257,7 @@ create index ttrss_tags_post_int_id_idx on ttrss_tags(post_int_id);
 
 create table ttrss_version (schema_version int not null);
 
-insert into ttrss_version values (101);
+insert into ttrss_version values (102);
 
 create table ttrss_enclosures (id serial not null primary key,
 	content_url text not null,
@@ -395,6 +395,8 @@ insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) valu
 
 insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_ENABLED_PLUGINS', 2, '', '', 1);
 
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_MOBILE_REVERSE_HEADLINES', 1, 'false', '', 1);
+
 update ttrss_prefs set access_level = 1 where pref_name in ('ON_CATCHUP_SHOW_NEXT_FEED',
 	'SORT_HEADLINES_BY_FEED_DATE',
 	'VFEED_GROUP_BY_FEED',
diff --git a/schema/versions/mysql/102.sql b/schema/versions/mysql/102.sql
new file mode 100644
index 0000000000000000000000000000000000000000..ccf5ef3b3523e8ab165527a7814f87c5e7823404
--- /dev/null
+++ b/schema/versions/mysql/102.sql
@@ -0,0 +1,7 @@
+begin;
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_MOBILE_REVERSE_HEADLINES', 1, 'false', '', 1);
+
+update ttrss_version set schema_version = 102;
+
+commit;
diff --git a/schema/versions/pgsql/102.sql b/schema/versions/pgsql/102.sql
new file mode 100644
index 0000000000000000000000000000000000000000..ccf5ef3b3523e8ab165527a7814f87c5e7823404
--- /dev/null
+++ b/schema/versions/pgsql/102.sql
@@ -0,0 +1,7 @@
+begin;
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_MOBILE_REVERSE_HEADLINES', 1, 'false', '', 1);
+
+update ttrss_version set schema_version = 102;
+
+commit;