Skip to content

Commit 01490ad

Browse files
committed
MOBILE-1701 imscp: Treat categories in TOC
1 parent 737efdf commit 01490ad

File tree

5 files changed

+40
-21
lines changed

5 files changed

+40
-21
lines changed

www/addons/mod/imscp/controllers/index.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,11 @@ angular.module('mm.addons.mod_imscp')
102102
};
103103

104104
$scope.loadItem = function(itemId) {
105+
if (!itemId) {
106+
// Not valid, probably a category.
107+
return;
108+
}
109+
105110
$scope.popover.hide();
106111
loadItem(itemId);
107112
};
@@ -120,10 +125,6 @@ angular.module('mm.addons.mod_imscp')
120125
scope: $scope
121126
}).then(function(popover) {
122127
$scope.popover = popover;
123-
124-
$scope.openToc = function($event) {
125-
popover.show($event);
126-
};
127128
});
128129
});
129130

www/addons/mod/imscp/services/imscp.js

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -78,16 +78,16 @@ angular.module('mm.addons.mod_imscp')
7878
* @protected
7979
*/
8080
self.getPreviousItem = function(items, itemId) {
81-
var previous = '';
82-
83-
for (var i = 0, len = items.length; i < len; i++) {
84-
if (items[i].href == itemId) {
85-
break;
81+
var position = getItemPosition(items, itemId);
82+
if (position != -1) {
83+
for (var i = position - 1; i >= 0; i--) {
84+
if (items[i] && items[i].href) {
85+
return items[i].href;
86+
}
8687
}
87-
previous = items[i].href;
8888
}
8989

90-
return previous;
90+
return '';
9191
};
9292

9393
/**
@@ -102,19 +102,33 @@ angular.module('mm.addons.mod_imscp')
102102
* @protected
103103
*/
104104
self.getNextItem = function(items, itemId) {
105-
var next = '';
106-
107-
for (var i = 0, len = items.length; i < len; i++) {
108-
if (items[i].href == itemId) {
109-
if (typeof items[i + 1] != 'undefined') {
110-
next = items[i + 1].href;
111-
break;
105+
var position = getItemPosition(items, itemId);
106+
if (position != -1) {
107+
for (var i = position + 1, len = items.length; i < len; i++) {
108+
if (items[i] && items[i].href) {
109+
return items[i].href;
112110
}
113111
}
114112
}
115-
return next;
113+
114+
return '';
116115
};
117116

117+
/**
118+
* Get the position of a item.
119+
*
120+
* @param {Object[]} items The items list.
121+
* @param {String} itemId The item to search
122+
* @return {Number} The item position.
123+
*/
124+
function getItemPosition(items, itemId) {
125+
for (var i = 0, len = items.length; i < len; i++) {
126+
if (items[i].href == itemId) {
127+
return i;
128+
}
129+
}
130+
return -1;
131+
}
118132

119133
/**
120134
* Check if we should ommit the file download.

www/addons/mod/imscp/templates/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<ion-view>
22
<ion-nav-title><mm-format-text watch="true">{{ title }}</mm-format-text></ion-nav-title>
33
<ion-nav-buttons side="secondary">
4-
<button class="button button-icon ion-bookmark" ng-click="openToc($event)">
4+
<button class="button button-icon ion-bookmark" ng-click="popover.show($event)" ng-if="items.length > 1">
55
</button>
66
<mm-context-menu>
77
<mm-context-menu-item priority="900" ng-if="externalUrl" href="{{externalUrl}}" content="{{ 'mm.core.openinbrowser' | translate }}" icon-action="ion-share"></mm-context-menu-item>

www/addons/mod/imscp/templates/toc.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<nav>
44
<ul class="list">
55
<li ng-repeat="item in items">
6-
<a class="item" ng-click="loadItem(item.href);">
6+
<a class="item" ng-click="loadItem(item.href)" ng-class='{"mm-bold": !item.href}'>
77
<span class="padding-left" ng-repeat="i in getNumberForPadding(item.level)"></span>{{item.title}}
88
</a>
99
</li>

www/core/scss/styles.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -462,6 +462,10 @@ mm-timer {
462462
font-family: Andale Mono,Monaco,Courier New,DejaVu Sans Mono,monospace;
463463
}
464464

465+
.mm-bold {
466+
font-weight: bold;
467+
}
468+
465469
// Context Menu
466470

467471
.popover.mm-context-menu {

0 commit comments

Comments
 (0)