mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-21 23:43:17 +01:00
WIP allow to place custom-fields in tabs:
- set size of cf name in all apps to 65 chars (calendar, resources, projectmanager had only 40) - allow units like K or MB for integer values e.g. et2_files max_file_size - allow to pass accept, mime and max_file_size from Filemanager custom-field to vfs-upload - allow to use name of "app:$cont[id]:relative-path/" as name for Filemanager custom-field ToDo/Missing: automatic saving of uploads for not yet saved entries via Api\Storage class
This commit is contained in:
parent
57c643ad8e
commit
25b343be7c
@ -17,7 +17,7 @@
|
|||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<et2-description value="Label"></et2-description>
|
<et2-description value="Label"></et2-description>
|
||||||
<et2-textbox statustext="the text displayed to the user" id="cf_label" maxlength="255" span="3"></et2-textbox>
|
<et2-textbox statustext="the text displayed to the user" id="cf_label" maxlength="128" span="3"></et2-textbox>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<et2-description value="Type of field"></et2-description>
|
<et2-description value="Type of field"></et2-description>
|
||||||
@ -31,10 +31,10 @@
|
|||||||
<et2-description value="Private"></et2-description>
|
<et2-description value="Private"></et2-description>
|
||||||
<et2-select-account statustext="Select accounts for which the custom field should be visible" id="cf_private" rows="3" span="3" multiple="1" placeholder="Add user or group" accountType="both"></et2-select-account>
|
<et2-select-account statustext="Select accounts for which the custom field should be visible" id="cf_private" rows="3" span="3" multiple="1" placeholder="Add user or group" accountType="both"></et2-select-account>
|
||||||
</row>
|
</row>
|
||||||
<row disabled="!@use_readonly">
|
<!-- disabled until implemented row disabled="!@use_readonly">
|
||||||
<et2-description value="Readonly"></et2-description>
|
<et2-description value="Readonly"></et2-description>
|
||||||
<et2-select-account statustext="Select accounts for which the custom field should be readonly" id="cf_readonly" rows="3" span="3" multiple="1" placeholder="Add user or group" accountType="both"></et2-select-account>
|
<et2-select-account statustext="Select accounts for which the custom field should be readonly" id="cf_readonly" rows="3" span="3" multiple="1" placeholder="Add user or group" accountType="both"></et2-select-account>
|
||||||
</row>
|
</row-->
|
||||||
<row>
|
<row>
|
||||||
<et2-description statustext="each value is a line like id[=label], or use @path to read options from a file in EGroupware directory" value="Options"></et2-description>
|
<et2-description statustext="each value is a line like id[=label], or use @path to read options from a file in EGroupware directory" value="Options"></et2-description>
|
||||||
<et2-textarea statustext="@statustext" id="cf_values" rows="5" cols="30" span="3" width="99%"></et2-textarea>
|
<et2-textarea statustext="@statustext" id="cf_values" rows="5" cols="30" span="3" width="99%"></et2-textarea>
|
||||||
@ -68,8 +68,8 @@
|
|||||||
</columns>
|
</columns>
|
||||||
<rows>
|
<rows>
|
||||||
<row class="dialogHeader" height="28">
|
<row class="dialogHeader" height="28">
|
||||||
<et2-description statustext="the name used internaly (&lt;= 20 chars), changeing it makes existing data unavailible" value="Name"></et2-description>
|
<et2-description value="Name"></et2-description>
|
||||||
<et2-textbox statustext="the name used internaly (<= 20 chars), changeing it makes existing data unavailible" id="cf_name" maxlength="32" span="2" required="true"></et2-textbox>
|
<et2-textbox statustext="internal name max. 64 chars" id="cf_name" maxlength="64" span="2" required="true"></et2-textbox>
|
||||||
<et2-appicon></et2-appicon>
|
<et2-appicon></et2-appicon>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
|
@ -193,6 +193,27 @@ export function et2_checkType(_val, _type, _attr, _widget)
|
|||||||
// parseInt(_val) to the value itself.
|
// parseInt(_val) to the value itself.
|
||||||
if (_type == "integer")
|
if (_type == "integer")
|
||||||
{
|
{
|
||||||
|
const unit_reg_exp = /^(\d+)([kmg]{0,1}b?)$/i;
|
||||||
|
// allow to use b, k, kb, m, mb, g or gb postfix
|
||||||
|
if (typeof _val === "string" && _val.match(unit_reg_exp))
|
||||||
|
{
|
||||||
|
const matches = _val.match(unit_reg_exp);
|
||||||
|
switch(matches[2][0].toLowerCase())
|
||||||
|
{
|
||||||
|
case 'b':
|
||||||
|
_val = parseInt(matches[1]);
|
||||||
|
break;
|
||||||
|
case 'k':
|
||||||
|
_val = parseInt(matches[1])*1024;
|
||||||
|
break;
|
||||||
|
case 'm':
|
||||||
|
_val = parseInt(matches[1])*1024*1024;
|
||||||
|
break;
|
||||||
|
case 'g':
|
||||||
|
_val = parseInt(matches[1])*1024*1024*1024;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (parseInt(_val) == _val)
|
if (parseInt(_val) == _val)
|
||||||
{
|
{
|
||||||
return parseInt(_val);
|
return parseInt(_val);
|
||||||
@ -779,4 +800,4 @@ export function et2_rangeSubstract(_ar1, _ar2)
|
|||||||
export function html_entity_decode(_str)
|
export function html_entity_decode(_str)
|
||||||
{
|
{
|
||||||
return _str && _str.indexOf('&') != -1 ? jQuery('<span>'+_str+'</span>').text() : _str;
|
return _str && _str.indexOf('&') != -1 ? jQuery('<span>'+_str+'</span>').text() : _str;
|
||||||
}
|
}
|
@ -880,6 +880,23 @@ export class et2_customfields_list extends et2_valueWidget implements et2_IDetac
|
|||||||
attrs.type = 'vfs-upload';
|
attrs.type = 'vfs-upload';
|
||||||
delete(attrs.label);
|
delete(attrs.label);
|
||||||
|
|
||||||
|
// fix vfs-upload id="$app:$id:$rest" e.g. "infolog:$cont[info_id]:test.pdf"
|
||||||
|
const vfs_app_id_regexp = /^#([a-z_]+):([@$][^:]+):(.*)$/;
|
||||||
|
if (attrs.id.match(vfs_app_id_regexp))
|
||||||
|
{
|
||||||
|
attrs.id = <string>this.getArrayMgr('content').expandName(attrs.id);
|
||||||
|
}
|
||||||
|
// allow to set/pass further et2_file attributes to the vfs-upload
|
||||||
|
if (field.values && typeof field.values === 'object')
|
||||||
|
{
|
||||||
|
['mime', 'accept', 'max_file_size'].forEach((name) => {
|
||||||
|
if (typeof field.values[name] !== 'undefined')
|
||||||
|
{
|
||||||
|
attrs[name] = field.values[name];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if (this.getType() == 'customfields-list')
|
if (this.getType() == 'customfields-list')
|
||||||
{
|
{
|
||||||
// No special UI needed?
|
// No special UI needed?
|
||||||
|
@ -39,7 +39,7 @@ export class et2_file extends et2_inputWidget
|
|||||||
"name": "Maximum file size",
|
"name": "Maximum file size",
|
||||||
"type": "integer",
|
"type": "integer",
|
||||||
"default":0,
|
"default":0,
|
||||||
"description": "Largest file accepted, in bytes. Subject to server limitations. 8MB = 8388608"
|
"description": "Largest file accepted, in bytes or with units: K, KB, M, MB, G or GB. Subject to server limitations."
|
||||||
},
|
},
|
||||||
"mime": {
|
"mime": {
|
||||||
"name": "Allowed file types",
|
"name": "Allowed file types",
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
$setup_info['calendar']['name'] = 'calendar';
|
$setup_info['calendar']['name'] = 'calendar';
|
||||||
$setup_info['calendar']['version'] = '23.1';
|
$setup_info['calendar']['version'] = '23.1.001';
|
||||||
$setup_info['calendar']['app_order'] = 3;
|
$setup_info['calendar']['app_order'] = 3;
|
||||||
$setup_info['calendar']['enable'] = 1;
|
$setup_info['calendar']['enable'] = 1;
|
||||||
$setup_info['calendar']['index'] = 'calendar.calendar_uiviews.index&ajax=true';
|
$setup_info['calendar']['index'] = 'calendar.calendar_uiviews.index&ajax=true';
|
||||||
|
@ -74,7 +74,7 @@ $phpgw_baseline = array(
|
|||||||
'egw_cal_extra' => array(
|
'egw_cal_extra' => array(
|
||||||
'fd' => array(
|
'fd' => array(
|
||||||
'cal_id' => array('type' => 'int','precision' => '4','nullable' => False),
|
'cal_id' => array('type' => 'int','precision' => '4','nullable' => False),
|
||||||
'cal_extra_name' => array('type' => 'varchar','meta' => 'cfname','precision' => '40','nullable' => False),
|
'cal_extra_name' => array('type' => 'varchar','meta' => 'cfname','precision' => '64','nullable' => False),
|
||||||
'cal_extra_value' => array('type' => 'varchar','meta' => 'cfvalue','precision' => '16384','nullable' => False,'default' => '')
|
'cal_extra_value' => array('type' => 'varchar','meta' => 'cfvalue','precision' => '16384','nullable' => False,'default' => '')
|
||||||
),
|
),
|
||||||
'pk' => array('cal_id','cal_extra_name'),
|
'pk' => array('cal_id','cal_extra_name'),
|
||||||
|
@ -2829,4 +2829,16 @@ function calendar_upgrade20_1()
|
|||||||
function calendar_upgrade21_1()
|
function calendar_upgrade21_1()
|
||||||
{
|
{
|
||||||
return $GLOBALS['setup_info']['calendar']['currentver'] = '23.1';
|
return $GLOBALS['setup_info']['calendar']['currentver'] = '23.1';
|
||||||
}
|
}
|
||||||
|
function calendar_upgrade23_1()
|
||||||
|
{
|
||||||
|
$GLOBALS['egw_setup']->oProc->AlterColumn('egw_cal_extra','cal_extra_name',array(
|
||||||
|
'type' => 'varchar',
|
||||||
|
'meta' => 'cfname',
|
||||||
|
'precision' => '64',
|
||||||
|
'nullable' => False
|
||||||
|
));
|
||||||
|
|
||||||
|
return $GLOBALS['setup_info']['calendar']['currentver'] = '23.1.001';
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
$setup_info['resources']['name'] = 'resources';
|
$setup_info['resources']['name'] = 'resources';
|
||||||
$setup_info['resources']['title'] = 'Resources';
|
$setup_info['resources']['title'] = 'Resources';
|
||||||
$setup_info['resources']['version'] = '23.1';
|
$setup_info['resources']['version'] = '23.1.001';
|
||||||
$setup_info['resources']['app_order'] = 5;
|
$setup_info['resources']['app_order'] = 5;
|
||||||
$setup_info['resources']['tables'] = array('egw_resources','egw_resources_extra');
|
$setup_info['resources']['tables'] = array('egw_resources','egw_resources_extra');
|
||||||
$setup_info['resources']['enable'] = 1;
|
$setup_info['resources']['enable'] = 1;
|
||||||
|
@ -43,7 +43,7 @@ $phpgw_baseline = array(
|
|||||||
'egw_resources_extra' => array(
|
'egw_resources_extra' => array(
|
||||||
'fd' => array(
|
'fd' => array(
|
||||||
'extra_id' => array('type' => 'int','precision' => '4','nullable' => False),
|
'extra_id' => array('type' => 'int','precision' => '4','nullable' => False),
|
||||||
'extra_name' => array('type' => 'varchar','meta' => 'cfname','precision' => '40','nullable' => False),
|
'extra_name' => array('type' => 'varchar','meta' => 'cfname','precision' => '64','nullable' => False),
|
||||||
'extra_owner' => array('type' => 'int','meta' => 'account','precision' => '4','nullable' => False,'default' => '-1'),
|
'extra_owner' => array('type' => 'int','meta' => 'account','precision' => '4','nullable' => False,'default' => '-1'),
|
||||||
'extra_value' => array('type' => 'varchar','meta' => 'cfvalue','precision' => '16384','nullable' => False,'default' => '')
|
'extra_value' => array('type' => 'varchar','meta' => 'cfvalue','precision' => '16384','nullable' => False,'default' => '')
|
||||||
),
|
),
|
||||||
|
@ -447,4 +447,16 @@ function resources_upgrade20_1()
|
|||||||
function resources_upgrade21_1()
|
function resources_upgrade21_1()
|
||||||
{
|
{
|
||||||
return $GLOBALS['setup_info']['resources']['currentver'] = '23.1';
|
return $GLOBALS['setup_info']['resources']['currentver'] = '23.1';
|
||||||
}
|
}
|
||||||
|
function resources_upgrade23_1()
|
||||||
|
{
|
||||||
|
$GLOBALS['egw_setup']->oProc->AlterColumn('egw_resources_extra','extra_name',array(
|
||||||
|
'type' => 'varchar',
|
||||||
|
'meta' => 'cfname',
|
||||||
|
'precision' => '64',
|
||||||
|
'nullable' => False
|
||||||
|
));
|
||||||
|
|
||||||
|
return $GLOBALS['setup_info']['resources']['currentver'] = '23.1.001';
|
||||||
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user