mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-23 07:09:20 +01:00
More changes to use chosen for fancy selectboxes - apply to egw multi-select and select user too
This commit is contained in:
parent
052897fcd8
commit
8b55a21206
@ -1586,8 +1586,9 @@ class etemplate_old extends boetemplate
|
|||||||
{
|
{
|
||||||
$enhance = $cell['enhance'];
|
$enhance = $cell['enhance'];
|
||||||
}
|
}
|
||||||
else if (count($c_options >= 8))
|
else if (count($c_options) >= 8)
|
||||||
{
|
{
|
||||||
|
// 8 or more optionsu - #7 is enhance flag
|
||||||
$enhance = ($c_options[7] == '1' || $c_options[7] == 'true');
|
$enhance = ($c_options[7] == '1' || $c_options[7] == 'true');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1641,7 +1642,8 @@ class etemplate_old extends boetemplate
|
|||||||
if ($multiple && is_numeric($multiple)) // eg. "3+" would give a regular multiselectbox
|
if ($multiple && is_numeric($multiple)) // eg. "3+" would give a regular multiselectbox
|
||||||
{
|
{
|
||||||
$html .= html::checkbox_multiselect($form_name.($multiple > 1 ? '[]' : ''),$value,$sels,
|
$html .= html::checkbox_multiselect($form_name.($multiple > 1 ? '[]' : ''),$value,$sels,
|
||||||
$cell['no_lang'],$options,$multiple,$multiple[0]!=='0',$extraStyleMultiselect);
|
$cell['no_lang'],$options,$multiple,$multiple[0]!=='0',
|
||||||
|
$extraStyleMultiselect,$enhance);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -484,6 +484,8 @@ class nextmatch_widget
|
|||||||
if (is_object($nextmatch))
|
if (is_object($nextmatch))
|
||||||
{
|
{
|
||||||
$size =& $nextmatch->get_cell_attribute('selectcols','size');
|
$size =& $nextmatch->get_cell_attribute('selectcols','size');
|
||||||
|
// Don't change to fancy multi-select here
|
||||||
|
$nextmatch->set_cell_attribute('selectcols','enhance',false);
|
||||||
if ($size > count($value['options-selectcols'])) $size = '0'.count($value['options-selectcols']);
|
if ($size > count($value['options-selectcols'])) $size = '0'.count($value['options-selectcols']);
|
||||||
if (!$GLOBALS['egw_info']['user']['apps']['admin'])
|
if (!$GLOBALS['egw_info']['user']['apps']['admin'])
|
||||||
{
|
{
|
||||||
|
@ -51,6 +51,11 @@ class html
|
|||||||
*/
|
*/
|
||||||
static $api_js_url;
|
static $api_js_url;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Automatically turn on enhanced selectboxes if there's more than this many options
|
||||||
|
*/
|
||||||
|
const SELECT_ENHANCED_ROW_COUNT = 12;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* initialise our static vars
|
* initialise our static vars
|
||||||
*/
|
*/
|
||||||
@ -224,7 +229,7 @@ class html
|
|||||||
*/
|
*/
|
||||||
static function select($name, $key, $arr=0,$no_lang=false,$options='',$multiple=0,$enhanced=null)
|
static function select($name, $key, $arr=0,$no_lang=false,$options='',$multiple=0,$enhanced=null)
|
||||||
{
|
{
|
||||||
if(is_null($enhanced)) $enhanced = (count($arr) > 12);
|
if(is_null($enhanced)) $enhanced = (count($arr) > self::SELECT_ENHANCED_ROW_COUNT);
|
||||||
|
|
||||||
if (!is_array($arr))
|
if (!is_array($arr))
|
||||||
{
|
{
|
||||||
@ -288,7 +293,7 @@ class html
|
|||||||
$out .= "</select>\n";
|
$out .= "</select>\n";
|
||||||
|
|
||||||
if($enhanced) {
|
if($enhanced) {
|
||||||
egw_framework::validate_file('/phpgwapi/js/jquery/chosen/chosen.jquery.min.js');
|
egw_framework::validate_file('/phpgwapi/js/jquery/chosen/chosen.jquery.js');
|
||||||
egw_framework::includeCSS('/phpgwapi/js/jquery/chosen/chosen.css',null,false);
|
egw_framework::includeCSS('/phpgwapi/js/jquery/chosen/chosen.css',null,false);
|
||||||
$out .= "<script>\$j(function() {\$j('select[name=\"$name\"]').chosen();});</script>\n";
|
$out .= "<script>\$j(function() {\$j('select[name=\"$name\"]').chosen();});</script>\n";
|
||||||
}
|
}
|
||||||
@ -311,9 +316,11 @@ class html
|
|||||||
* @param string $style='' extra style settings like "width: 100%", default '' none
|
* @param string $style='' extra style settings like "width: 100%", default '' none
|
||||||
* @return string to set for a template or to echo into html page
|
* @return string to set for a template or to echo into html page
|
||||||
*/
|
*/
|
||||||
static function checkbox_multiselect($name, $key, $arr=0,$no_lang=false,$options='',$multiple=3,$selected_first=true,$style='')
|
static function checkbox_multiselect($name, $key, $arr=0,$no_lang=false,$options='',$multiple=3,$selected_first=true,$style='',$enhanced = null)
|
||||||
{
|
{
|
||||||
//echo "<p align=right>checkbox_multiselect('$name',".array2string($key).",".array2string($arr).",$no_lang,'$options',$multiple,$selected_first,'$style')</p>\n";
|
//echo "<p align=right>checkbox_multiselect('$name',".array2string($key).",".array2string($arr).",$no_lang,'$options',$multiple,$selected_first,'$style')</p>\n";
|
||||||
|
if(is_null($enhanced)) $enhanced = (count($arr) > self::SELECT_ENHANCED_ROW_COUNT);
|
||||||
|
|
||||||
if (!is_array($arr))
|
if (!is_array($arr))
|
||||||
{
|
{
|
||||||
$arr = array('no','yes');
|
$arr = array('no','yes');
|
||||||
@ -326,6 +333,8 @@ class html
|
|||||||
}
|
}
|
||||||
$base_name = substr($name,0,-2);
|
$base_name = substr($name,0,-2);
|
||||||
|
|
||||||
|
if($enhanced) return self::select($name, $key, $arr,$no_lang,$options,$multiple,$enhanced);
|
||||||
|
|
||||||
if (!is_array($key))
|
if (!is_array($key))
|
||||||
{
|
{
|
||||||
// explode on ',' only if multiple values expected and the key contains just numbers and commas
|
// explode on ',' only if multiple values expected and the key contains just numbers and commas
|
||||||
|
@ -52,6 +52,10 @@ class uiaccountsel
|
|||||||
{
|
{
|
||||||
$this->account_selection = 'primary_group';
|
$this->account_selection = 'primary_group';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Include these here, framework may have already sent header by the time the account select is made
|
||||||
|
egw_framework::validate_file('/phpgwapi/js/jquery/chosen/chosen.jquery.js');
|
||||||
|
egw_framework::includeCSS('/phpgwapi/js/jquery/chosen/chosen.css',null,false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -292,7 +296,11 @@ class uiaccountsel
|
|||||||
}
|
}
|
||||||
elseif (!$only_groups && ($lines == 1 || $lines > 0 && $this->account_selection == 'primary_group'))
|
elseif (!$only_groups && ($lines == 1 || $lines > 0 && $this->account_selection == 'primary_group'))
|
||||||
{
|
{
|
||||||
$js = "if (selectBox = document.getElementById('$element_id')) if (!selectBox.multiple) {selectBox.size=$multi_size; selectBox.multiple=true; if (selectBox.options[0].value=='') selectBox.options[0] = null;";
|
$js = "if (selectBox = document.getElementById('$element_id')) if (!selectBox.multiple) { if(\$j(selectBox).unchosen) \$j(selectBox).unchosen(); selectBox.size=$multi_size; selectBox.multiple=true; if (selectBox.options[0].value=='') selectBox.options[0] = null;";
|
||||||
|
if(count($select) > html::SELECT_ENHANCED_ROW_COUNT)
|
||||||
|
{
|
||||||
|
$js .= "\$j(selectBox).css('width','100%').chosen({placeholder_text: '".lang('Select multiple accounts')."'}); ";
|
||||||
|
}
|
||||||
if (!in_array($this->account_selection,array('groupmembers','selectbox'))) // no popup!
|
if (!in_array($this->account_selection,array('groupmembers','selectbox'))) // no popup!
|
||||||
{
|
{
|
||||||
$js .= " this.src='".common::image('phpgwapi','search')."'; this.title='".
|
$js .= " this.src='".common::image('phpgwapi','search')."'; this.title='".
|
||||||
@ -301,7 +309,7 @@ class uiaccountsel
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$js .= " this.style.display='none'; selectBox.style.width='100%';";
|
$js .= "this.style.display='none'; selectBox.style.width='100%';";
|
||||||
}
|
}
|
||||||
$js .= "} return false;";
|
$js .= "} return false;";
|
||||||
$html .= html::submit_button('search','Select multiple accounts',$js,false,
|
$html .= html::submit_button('search','Select multiple accounts',$js,false,
|
||||||
@ -329,6 +337,7 @@ function addOption(id,label,value,do_onchange)
|
|||||||
selectBox.options[selectBox.length] = new Option(label,value,false,true);
|
selectBox.options[selectBox.length] = new Option(label,value,false,true);
|
||||||
}
|
}
|
||||||
if (selectBox.onchange && do_onchange) selectBox.onchange();
|
if (selectBox.onchange && do_onchange) selectBox.onchange();
|
||||||
|
$j(selectBox).trigger("liszt:updated");
|
||||||
}
|
}
|
||||||
</script>';
|
</script>';
|
||||||
$GLOBALS['egw_info']['flags']['uiaccountsel']['addOption_installed'] = True;
|
$GLOBALS['egw_info']['flags']['uiaccountsel']['addOption_installed'] = True;
|
||||||
|
3
phpgwapi/js/jquery/chosen/.gitignore
vendored
3
phpgwapi/js/jquery/chosen/.gitignore
vendored
@ -1,3 +0,0 @@
|
|||||||
.DS_Store
|
|
||||||
node_modules
|
|
||||||
.project
|
|
@ -156,7 +156,7 @@
|
|||||||
border: 0 !important;
|
border: 0 !important;
|
||||||
font-family: sans-serif;
|
font-family: sans-serif;
|
||||||
font-size: 100%;
|
font-size: 100%;
|
||||||
height: 15px;
|
height: 12px;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
margin: 1px 0;
|
margin: 1px 0;
|
||||||
outline: 0;
|
outline: 0;
|
||||||
@ -186,9 +186,9 @@
|
|||||||
box-shadow : 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);
|
box-shadow : 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);
|
||||||
color: #333;
|
color: #333;
|
||||||
border: 1px solid #aaaaaa;
|
border: 1px solid #aaaaaa;
|
||||||
line-height: 13px;
|
line-height: 12px;
|
||||||
padding: 3px 20px 3px 5px;
|
padding: 3px 20px 3px 5px;
|
||||||
margin: 3px 0 3px 5px;
|
margin: 2px 0 2px 1px;
|
||||||
position: relative;
|
position: relative;
|
||||||
cursor: default;
|
cursor: default;
|
||||||
}
|
}
|
||||||
@ -230,7 +230,7 @@
|
|||||||
.chzn-container .chzn-results {
|
.chzn-container .chzn-results {
|
||||||
margin: 0 4px 4px 0;
|
margin: 0 4px 4px 0;
|
||||||
max-height: 240px;
|
max-height: 240px;
|
||||||
padding: 0 0 0 4px;
|
padding: 0 0 0 0px;
|
||||||
position: relative;
|
position: relative;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
@ -242,8 +242,7 @@
|
|||||||
}
|
}
|
||||||
.chzn-container .chzn-results li {
|
.chzn-container .chzn-results li {
|
||||||
display: none;
|
display: none;
|
||||||
line-height: 15px;
|
padding: 3px 6px;
|
||||||
padding: 5px 6px;
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
list-style: none;
|
list-style: none;
|
||||||
}
|
}
|
||||||
|
@ -249,10 +249,7 @@ Copyright (c) 2011 by Harvest
|
|||||||
};
|
};
|
||||||
|
|
||||||
AbstractChosen.prototype.generate_field_id = function() {
|
AbstractChosen.prototype.generate_field_id = function() {
|
||||||
var new_id;
|
return this.generate_random_id();
|
||||||
new_id = this.generate_random_id();
|
|
||||||
this.form_field.id = new_id;
|
|
||||||
return new_id;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
AbstractChosen.prototype.generate_random_char = function() {
|
AbstractChosen.prototype.generate_random_char = function() {
|
||||||
@ -296,6 +293,18 @@ Copyright (c) 2011 by Harvest
|
|||||||
return $this.data('chosen', new Chosen(this, options));
|
return $this.data('chosen', new Chosen(this, options));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
unchosen: function() {
|
||||||
|
return $(this).each(function(input_field) {
|
||||||
|
var chosen, element;
|
||||||
|
element = $(this);
|
||||||
|
chosen = element.data("chosen");
|
||||||
|
if (chosen) {
|
||||||
|
chosen.remove();
|
||||||
|
element.data("chosen", null);
|
||||||
|
}
|
||||||
|
return element;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -419,6 +428,15 @@ Copyright (c) 2011 by Harvest
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Chosen.prototype.unregister_observers = function() {
|
||||||
|
return this.form_field_jq.unbind();
|
||||||
|
};
|
||||||
|
|
||||||
|
Chosen.prototype.remove_html = function() {
|
||||||
|
this.form_field_jq.show().removeClass('chzn-done');
|
||||||
|
return this.container.remove();
|
||||||
|
};
|
||||||
|
|
||||||
Chosen.prototype.search_field_disabled = function() {
|
Chosen.prototype.search_field_disabled = function() {
|
||||||
this.is_disabled = this.form_field_jq[0].disabled;
|
this.is_disabled = this.form_field_jq[0].disabled;
|
||||||
if (this.is_disabled) {
|
if (this.is_disabled) {
|
||||||
@ -619,6 +637,13 @@ Copyright (c) 2011 by Harvest
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Chosen.prototype.reset_tab_index = function() {
|
||||||
|
var tabbed_item;
|
||||||
|
tabbed_item = this.is_multiple ? this.search_field : this.selected_item;
|
||||||
|
this.form_field_jq.attr("tabindex",tabbed_item.attr("tabindex"));
|
||||||
|
return tabbed_item.attr("tabindex") - 1;
|
||||||
|
};
|
||||||
|
|
||||||
Chosen.prototype.show_search_field_default = function() {
|
Chosen.prototype.show_search_field_default = function() {
|
||||||
if (this.is_multiple && this.choices < 1 && !this.active_field) {
|
if (this.is_multiple && this.choices < 1 && !this.active_field) {
|
||||||
this.search_field.val(this.default_text);
|
this.search_field.val(this.default_text);
|
||||||
@ -888,6 +913,12 @@ Copyright (c) 2011 by Harvest
|
|||||||
return this.search_results.find(".no-results").remove();
|
return this.search_results.find(".no-results").remove();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Chosen.prototype.remove = function() {
|
||||||
|
this.reset_tab_index();
|
||||||
|
this.unregister_observers();
|
||||||
|
return this.remove_html();
|
||||||
|
};
|
||||||
|
|
||||||
Chosen.prototype.keydown_arrow = function() {
|
Chosen.prototype.keydown_arrow = function() {
|
||||||
var first_active, next_sib;
|
var first_active, next_sib;
|
||||||
if (!this.result_highlight) {
|
if (!this.result_highlight) {
|
||||||
|
10
phpgwapi/js/jquery/chosen/chosen.jquery.min.js
vendored
10
phpgwapi/js/jquery/chosen/chosen.jquery.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
10
phpgwapi/js/jquery/chosen/chosen.proto.min.js
vendored
10
phpgwapi/js/jquery/chosen/chosen.proto.min.js
vendored
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user