mirror of
https://git.code.sf.net/p/seeddms/code
synced 2024-11-26 15:32:13 +00:00
Merge branch 'seeddms-5.1.x' into seeddms-6.0.x
This commit is contained in:
commit
08cac16ecf
|
@ -297,6 +297,7 @@
|
|||
- set default language in login form if language selector is turned off
|
||||
- do not show full list of notifiers to none admins
|
||||
- do not list document/folders in sequence selector if its number exceeds 50
|
||||
- typeahead menu works with arrow keys again, wait 1 sec. before searching
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
Changes in version 5.1.33
|
||||
|
|
|
@ -152,8 +152,8 @@ switch($command) {
|
|||
$result = array();
|
||||
foreach($hits['folders'] as $hit) {
|
||||
if($hit->getAccessMode($user, 'search') >= M_READ)
|
||||
//$result[] = $hit->getID().'#'.$basefolder->getName().'/'.$hit->getName();
|
||||
$result[] = $hit->getID().'#'.$hit->getFolderPathPlain(true, '/');
|
||||
// $result[] = $hit->getID().'#'.$hit->getFolderPathPlain(true, '/');
|
||||
$result[] = array('type'=>'F', 'id'=>$hit->getId(), 'name'=>htmlspecialchars($hit->getFolderPathPlain(true, '/')), 'path'=>htmlspecialchars($hit->getParent()->getFolderPathPlain(true, '/')));
|
||||
}
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode($result);
|
||||
|
@ -165,7 +165,8 @@ switch($command) {
|
|||
$result = array();
|
||||
foreach($subfolders as $subfolder) {
|
||||
//$result[] = $subfolder->getID().'#'.$basefolder->getName().'/'.$subfolder->getName();
|
||||
$result[] = $subfolder->getID().'#'.$subfolder->getFolderPathPlain(true, '/');
|
||||
// $result[] = $subfolder->getID().'#'.$subfolder->getFolderPathPlain(true, '/');
|
||||
$result[] = array('type'=>'F', 'id'=>$subfolder->getId(), 'name'=>htmlspecialchars($subfolder->getFolderPathPlain(true, '/')), 'path'=>htmlspecialchars($subfolder->getParent()->getFolderPathPlain(true, '/')));
|
||||
}
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode($result);
|
||||
|
@ -180,7 +181,8 @@ switch($command) {
|
|||
$result = array();
|
||||
foreach($hits['folders'] as $hit) {
|
||||
if($hit->getAccessMode($user, 'search') >= M_READ)
|
||||
$result[] = $hit->getID().'#'.$hit->getFolderPathPlain(true, '/');
|
||||
// $result[] = $hit->getID().'#'.$hit->getFolderPathPlain(true, '/');
|
||||
$result[] = array('type'=>'F', 'id'=>$hit->getId(), 'name'=>htmlspecialchars($hit->getFolderPathPlain(true, '/')), 'path'=>htmlspecialchars($hit->getParent()->getFolderPathPlain(true, '/')));
|
||||
}
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode($result);
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
this.source = this.options.source
|
||||
this.$menu = $(this.options.menu)
|
||||
this.shown = false
|
||||
this.timeout = null
|
||||
this.listen()
|
||||
}
|
||||
|
||||
|
@ -254,7 +255,11 @@
|
|||
break
|
||||
|
||||
default:
|
||||
this.lookup()
|
||||
clearTimeout(this.timeout);
|
||||
|
||||
this.timeout = setTimeout(() => {
|
||||
this.lookup()
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
e.stopPropagation()
|
||||
|
|
|
@ -238,19 +238,40 @@ function initMost() {
|
|||
* actually provided to update the input field, but here we use
|
||||
* it to set the document location. */
|
||||
updater: function (item) {
|
||||
strarr = item.value.split("#");
|
||||
//console.log(this.$element.data('target'));
|
||||
target = this.$element.data('target');
|
||||
$('#'+target).attr('value', strarr[0]);
|
||||
return strarr[1];
|
||||
$('#'+target).attr('value', item.id);
|
||||
return item.value;
|
||||
},
|
||||
sorter: function(items) {
|
||||
return items;
|
||||
},
|
||||
/* Set a matcher that allows any returned value */
|
||||
matcher : function (item) {
|
||||
return true;
|
||||
},
|
||||
highlighter : function (item) {
|
||||
strarr = item.split("#");
|
||||
return '<i class="fa fa-folder-o"></i> ' + strarr[1].replace(/</g, '<');
|
||||
return '<i class="fa fa-folder-o"></i> ' + item.name.replace(/</g, '<') + (typeof(item.path) != 'undefined' ? '<br /><span class="path">' + item.path + '</span>' : '');
|
||||
},
|
||||
/* This only works with a modified version of bootstrap typeahead located
|
||||
* in boostrap-typeahead.js Search for 'render'
|
||||
* The line
|
||||
* this.render = this.options.render || this.render
|
||||
* was added to bootstrap-typeahead.js
|
||||
* The following function is a copy of the original render function but
|
||||
* access item.name instead of item
|
||||
*/
|
||||
render : function (items) {
|
||||
var that = this
|
||||
|
||||
items = $(items).map(function (i, item) {
|
||||
i = $(that.options.item).attr('data-value', item.name).attr('data-id', item.id).attr('data-type', item.type);
|
||||
i.find('a').html(that.highlighter(item))
|
||||
return i[0]
|
||||
})
|
||||
|
||||
items.first().addClass('active')
|
||||
this.$menu.html(items)
|
||||
return this
|
||||
}
|
||||
}); /* }}} */
|
||||
}
|
||||
|
|
|
@ -93,8 +93,8 @@ function initMost() {
|
|||
* for each hit and render could only process strings.
|
||||
* */
|
||||
$("#searchfield").typeahead({ /* {{{ */
|
||||
menu: '<div class="typeahead dropdown-menu"></div>',
|
||||
item: '<li><a class="dropdown-item" href="#"></a></li>',
|
||||
menu: '<div class="typeahead dropdown-menu" style="max-height: 500px; overflow-y: auto;"></div>',
|
||||
item: '<a class="dropdown-item" href="#"></a>',
|
||||
minLength: 3,
|
||||
items: 100, /* the query will limit the number of hits */
|
||||
source: function(query, process) {
|
||||
|
@ -170,7 +170,8 @@ function initMost() {
|
|||
|
||||
items = $(items).map(function (i, item) {
|
||||
i = $(that.options.item).attr('data-value', item.name).attr('data-id', item.id).attr('data-type', item.type);
|
||||
i.find('a').html(that.highlighter(item))
|
||||
/* i is already the 'a' tag, there is no 'li' as used by bootstrap 2 */
|
||||
i./*find('a').*/html(that.highlighter(item))
|
||||
return i[0]
|
||||
})
|
||||
|
||||
|
@ -184,7 +185,7 @@ function initMost() {
|
|||
/* Document chooser */
|
||||
$("[id^=choosedocsearch]").typeahead({ /* {{{ */
|
||||
menu: '<div class="typeahead dropdown-menu"></div>',
|
||||
item: '<li><a class="dropdown-item" href="#"></a></li>',
|
||||
item: '<a class="dropdown-item" href="#"></a>',
|
||||
minLength: 3,
|
||||
source: function(query, process) {
|
||||
// console.log(this.options);
|
||||
|
@ -222,7 +223,7 @@ function initMost() {
|
|||
|
||||
items = $(items).map(function (i, item) {
|
||||
i = $(that.options.item).attr('data-value', item.name).attr('data-id', item.id).attr('data-type', item.type);
|
||||
i.find('a').html(that.highlighter(item))
|
||||
i./*find('a').*/html(that.highlighter(item))
|
||||
return i[0]
|
||||
})
|
||||
|
||||
|
@ -235,7 +236,7 @@ function initMost() {
|
|||
/* Folder chooser */
|
||||
$("[id^=choosefoldersearch]").typeahead({ /* {{{ */
|
||||
menu: '<div class="typeahead dropdown-menu"></div>',
|
||||
item: '<li><a class="dropdown-item" href="#"></a></li>',
|
||||
item: '<a class="dropdown-item" href="#"></a>',
|
||||
minLength: 3,
|
||||
source: function(query, process) {
|
||||
// console.log(this.options);
|
||||
|
@ -247,19 +248,40 @@ function initMost() {
|
|||
* actually provided to update the input field, but here we use
|
||||
* it to set the document location. */
|
||||
updater: function (item) {
|
||||
strarr = item.value.split("#");
|
||||
//console.log(this.$element.data('target'));
|
||||
target = this.$element.data('target');
|
||||
$('#'+target).attr('value', strarr[0]);
|
||||
return strarr[1];
|
||||
$('#'+target).attr('value', item.id);
|
||||
return item.value;
|
||||
},
|
||||
sorter: function(items) {
|
||||
return items;
|
||||
},
|
||||
/* Set a matcher that allows any returned value */
|
||||
matcher : function (item) {
|
||||
return true;
|
||||
},
|
||||
highlighter : function (item) {
|
||||
strarr = item.split("#");
|
||||
return '<i class="fa fa-folder-o"></i> ' + strarr[1].replace(/</g, '<');
|
||||
return '<i class="fa fa-folder-o"></i> ' + item.name.replace(/</g, '<') + (typeof(item.path) != 'undefined' ? '<br /><span class="path">' + item.path + '</span>' : '');
|
||||
},
|
||||
/* This only works with a modified version of bootstrap typeahead located
|
||||
* in boostrap-typeahead.js Search for 'render'
|
||||
* The line
|
||||
* this.render = this.options.render || this.render
|
||||
* was added to bootstrap-typeahead.js
|
||||
* The following function is a copy of the original render function but
|
||||
* access item.name instead of item
|
||||
*/
|
||||
render : function (items) {
|
||||
var that = this
|
||||
|
||||
items = $(items).map(function (i, item) {
|
||||
i = $(that.options.item).attr('data-value', item.name).attr('data-id', item.id).attr('data-type', item.type);
|
||||
i./*find('a').*/html(that.highlighter(item))
|
||||
return i[0]
|
||||
})
|
||||
|
||||
items.first().addClass('active')
|
||||
this.$menu.html(items)
|
||||
return this
|
||||
}
|
||||
}); /* }}} */
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user