Browse Source

Bookmarks sortable

Piotr Labudda 10 years ago
parent
commit
745a19f4d7
4 changed files with 38 additions and 5 deletions
  1. 9 4
      SE/index-ajax.php
  2. 13 0
      SE/se-lib/ProcesMenu.php
  3. 13 0
      SE/se-lib/UserBookmarks.php
  4. 3 1
      SE/se-lib/tmpl/_layout_gora.php

+ 9 - 4
SE/index-ajax.php

@@ -60,15 +60,13 @@ if ($cls == 'UserBookmarks') {
 		}
 		$userBookmarks->addBookmark($zasobID);
 		User::saveProfile();
-	}
-	else 	if ($task == 'remove_bookmark') {
+	} else if ($task == 'remove_bookmark') {
 		if ($zasobID <= 0) {
 			die('Error: no resource');
 		}
 		$userBookmarks->removeBookmark($zasobID);
 		User::saveProfile();
-	}
-	else 	if ($task == 'change_bookmark') {
+	} else if ($task == 'change_bookmark') {
 		if ($zasobID <= 0) {
 			die('Error: no resource');
 		}
@@ -78,6 +76,13 @@ if ($cls == 'UserBookmarks') {
 		}
 		$userBookmarks->changeBookmark($zasobID, $btnCls);
 		User::saveProfile();
+	} else if ($task == 'sort_bookmarks') {
+		$idsOrdered = V::get('ids', array(), $_REQUEST, 'array', array('V', 'filterPositiveInteger'));
+		if (empty($idsOrdered)) {
+			die('Error: no ids');
+		}
+		$userBookmarks->sortBookmarks($idsOrdered);
+		User::saveProfile();
 	}
 
 	// default - always return bookmarks

+ 13 - 0
SE/se-lib/ProcesMenu.php

@@ -886,6 +886,10 @@ jQuery(document).ready(function() {
 
 			if (priv.options.urlInit) priv.update();
 			if (priv.options.preloadData) priv.setData(priv.options.preloadData);
+
+			_cont.sortable();
+			_cont.on('sortupdate', priv.sort);
+
 		};
 
 		priv.setData = function(data) {
@@ -986,6 +990,15 @@ jQuery(document).ready(function() {
 			return false;
 		};
 
+		priv.sort = function(e, ui) {
+			var idsOrder = [];
+			_cont.find('a').each(function(ind, n){
+				idsOrder.push($(n).data('id'));
+			});
+			priv.update('sort_bookmarks', 0, '&ids[]=' + idsOrder.join('&ids[]='));
+			return true;
+		};
+
 		priv.addEditBtns = function(el) {
 			var next, btn;
 			el.wrap('<div></div>');

+ 13 - 0
SE/se-lib/UserBookmarks.php

@@ -40,6 +40,19 @@ class UserBookmarks {
 		$_SESSION['USER_PROFILE'][$this->_sesKey][$zasobID] = $cls;
 	}
 
+	public function sortBookmarks($idsOrder) {
+		$bookmarks = $this->getBookmarks();
+		if (empty($bookmarks)) return;
+		if (empty($idsOrder)) return;
+		$sortedBookmarks = array();
+		foreach ($idsOrder as $id) {
+			if (array_key_exists($id, $bookmarks)) {
+				$sortedBookmarks[$id] = $bookmarks[$id];
+			}
+		}
+		$_SESSION['USER_PROFILE'][$this->_sesKey] = $sortedBookmarks;
+	}
+
 	public function hasBookmark($zasobID) {
 		return array_key_exists($zasobID, $_SESSION['USER_PROFILE'][$this->_sesKey]);
 	}

+ 3 - 1
SE/se-lib/tmpl/_layout_gora.php

@@ -11,7 +11,9 @@
 -->
 	<link rel="stylesheet" href="stuff/jquery.selectize/css/selectize.bootstrap3.css" type="text/css" />
 	<link rel="stylesheet" href="stuff/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css" type="text/css" />
+	<link rel="stylesheet" href="stuff/jquery-ui-smoothness/jquery-ui-1.10.4.custom.min.css" type="text/css">
 	<link rel="stylesheet" href="stuff/main.css" type="text/css" />
+
 	<script src="stuff/jquery-2.1.0.min.js"></script>
 	<script src="stuff/jquery-plugins.js"></script>
 	<script src="stuff/jquery.form.js"></script>
@@ -22,7 +24,7 @@
 	<script src="stuff/moment/pl.js"></script>
 	<script src="stuff/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
 	<script src="stuff/notify.min.js"></script>
-<!-- <script src="stuff/jquery-ui-1.10.4.custom.min.js"></script> -->
+	<script src="stuff/jquery-ui-1.10.4.custom.min.js"></script>
 	<script src="stuff/jquery.hotkeys.js"></script>
 	<script src="stuff/lodash.min.js"></script>
 	<script src="stuff/superagent.js"></script>