forked from Wavyzz/dolibarr
Works on extend edit in place with external modules (in progress)
Conflicts: htdocs/core/class/commonobject.class.php htdocs/core/class/html.form.class.php
This commit is contained in:
@@ -46,9 +46,13 @@ if((isset($_GET['field']) && ! empty($_GET['field']))
|
|||||||
{
|
{
|
||||||
$element = GETPOST('element');
|
$element = GETPOST('element');
|
||||||
$table_element = GETPOST('table_element');
|
$table_element = GETPOST('table_element');
|
||||||
$field = substr(GETPOST('field'), 4); // remove prefix val_
|
|
||||||
$fk_element = GETPOST('fk_element');
|
$fk_element = GETPOST('fk_element');
|
||||||
|
$ext_element = GETPOST('ext_element');
|
||||||
|
//$ext_table_element = GETPOST('ext_table_element');
|
||||||
|
//$ext_fk_element = GETPOST('ext_fk_element');
|
||||||
|
$field = substr(GETPOST('field'), 4); // remove prefix val_
|
||||||
$type = GETPOST('type');
|
$type = GETPOST('type');
|
||||||
|
$loadmethod = (GETPOST('loadmethod') ? GETPOST('loadmethod') : 'getValueFrom');
|
||||||
|
|
||||||
if (preg_match('/^([^_]+)_([^_]+)/i',$element,$regs))
|
if (preg_match('/^([^_]+)_([^_]+)/i',$element,$regs))
|
||||||
{
|
{
|
||||||
@@ -62,8 +66,8 @@ if((isset($_GET['field']) && ! empty($_GET['field']))
|
|||||||
{
|
{
|
||||||
if ($type == 'select')
|
if ($type == 'select')
|
||||||
{
|
{
|
||||||
$methodname = 'load_cache_'.GETPOST('method');
|
$methodname = 'load_cache_'.$loadmethod;
|
||||||
$cachename = 'cache_'.GETPOST('method');
|
$cachename = 'cache_'.GETPOST('loadmethod');
|
||||||
|
|
||||||
$form = new Form($db);
|
$form = new Form($db);
|
||||||
if (method_exists($form, $methodname))
|
if (method_exists($form, $methodname))
|
||||||
@@ -71,18 +75,19 @@ if((isset($_GET['field']) && ! empty($_GET['field']))
|
|||||||
$ret = $form->$methodname();
|
$ret = $form->$methodname();
|
||||||
if ($ret > 0) echo json_encode($form->$cachename);
|
if ($ret > 0) echo json_encode($form->$cachename);
|
||||||
}
|
}
|
||||||
else
|
else if (! empty($ext_element))
|
||||||
{
|
{
|
||||||
dol_include_once('/'.$element.'/class/'.$element.'.class.php');
|
dol_include_once('/'.$ext_element.'/class/actions_'.$ext_element.'.class.php');
|
||||||
$classname = ucfirst($element);
|
$classname = 'Actions'.ucfirst($ext_element);
|
||||||
$object = new $classname($db);
|
$object = new $classname($db);
|
||||||
print_r($object);
|
$ret = $object->$methodname();
|
||||||
|
if ($ret > 0) echo json_encode($object->$cachename);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$object = new GenericObject($db);
|
$object = new GenericObject($db);
|
||||||
$value=$object->getValueFrom($table_element, $fk_element, $field);
|
$value=$object->$loadmethod($table_element, $fk_element, $field);
|
||||||
echo $value;
|
echo $value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,10 +47,14 @@ if((isset($_POST['field']) && ! empty($_POST['field']))
|
|||||||
{
|
{
|
||||||
$element = GETPOST('element');
|
$element = GETPOST('element');
|
||||||
$table_element = GETPOST('table_element');
|
$table_element = GETPOST('table_element');
|
||||||
$field = substr(GETPOST('field'), 4); // remove prefix val_
|
|
||||||
$fk_element = GETPOST('fk_element');
|
$fk_element = GETPOST('fk_element');
|
||||||
|
$ext_element = GETPOST('ext_element');
|
||||||
|
//$ext_table_element = GETPOST('ext_table_element');
|
||||||
|
//$ext_fk_element = GETPOST('ext_fk_element');
|
||||||
|
$field = substr(GETPOST('field'), 4); // remove prefix val_
|
||||||
$value = GETPOST('value');
|
$value = GETPOST('value');
|
||||||
$type = GETPOST('type');
|
$type = GETPOST('type');
|
||||||
|
$savemethodname = (GETPOST('savemethod') ? GETPOST('savemethod') : 'setValueFrom');
|
||||||
|
|
||||||
$format='text';
|
$format='text';
|
||||||
$return=array();
|
$return=array();
|
||||||
@@ -66,8 +70,6 @@ if((isset($_POST['field']) && ! empty($_POST['field']))
|
|||||||
|
|
||||||
if ($user->rights->$element->creer || $user->rights->$element->write)
|
if ($user->rights->$element->creer || $user->rights->$element->write)
|
||||||
{
|
{
|
||||||
$object = new GenericObject($db);
|
|
||||||
|
|
||||||
// Clean parameters
|
// Clean parameters
|
||||||
$newvalue = trim($value);
|
$newvalue = trim($value);
|
||||||
|
|
||||||
@@ -90,21 +92,47 @@ if((isset($_POST['field']) && ! empty($_POST['field']))
|
|||||||
}
|
}
|
||||||
else if ($type == 'select')
|
else if ($type == 'select')
|
||||||
{
|
{
|
||||||
$methodname = 'load_cache_'.GETPOST('method');
|
$loadmethodname = 'load_cache_'.GETPOST('loadmethod');
|
||||||
$cachename = 'cache_'.GETPOST('method');
|
$loadcachename = 'cache_'.GETPOST('loadmethod');
|
||||||
|
|
||||||
$form = new Form($db);
|
$form = new Form($db);
|
||||||
$ret = $form->$methodname();
|
if (method_exists($form, $loadmethodname))
|
||||||
|
{
|
||||||
|
$ret = $form->$loadmethodname();
|
||||||
if ($ret > 0)
|
if ($ret > 0)
|
||||||
{
|
{
|
||||||
$cache = $form->$cachename;
|
$loadcache = $form->$loadcachename;
|
||||||
$value = $cache[$newvalue];
|
$value = $loadcache[$newvalue];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
$return['error'] = $form->error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dol_include_once('/'.$ext_element.'/class/actions_'.$ext_element.'.class.php');
|
||||||
|
$classname = 'Actions'.ucfirst($ext_element);
|
||||||
|
$object = new $classname($db);
|
||||||
|
$ret = $object->$loadmethodname();
|
||||||
|
if ($ret > 0)
|
||||||
|
{
|
||||||
|
$loadcache = $object->$loadcachename;
|
||||||
|
$value = $loadcache[$newvalue];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
$return['error'] = $object->error;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
$ret=$object->setValueFrom($field, $newvalue, $table_element, $fk_element, $format);
|
if (! is_object($object)) $object = new GenericObject($db);
|
||||||
|
$ret=$object->$savemethodname($field, $newvalue, $table_element, $fk_element, $format);
|
||||||
if ($ret > 0)
|
if ($ret > 0)
|
||||||
{
|
{
|
||||||
if ($type == 'numeric') $value = price($newvalue);
|
if ($type == 'numeric') $value = price($newvalue);
|
||||||
|
|||||||
@@ -1341,7 +1341,7 @@ abstract class CommonObject
|
|||||||
$sql.= ", '".$this->element."'";
|
$sql.= ", '".$this->element."'";
|
||||||
$sql.= ")";
|
$sql.= ")";
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::add_object_linked sql=".$sql);
|
dol_syslog(get_class($this)."::add_object_linked sql=".$sql, LOG_DEBUG);
|
||||||
if ($this->db->query($sql))
|
if ($this->db->query($sql))
|
||||||
{
|
{
|
||||||
$this->db->commit();
|
$this->db->commit();
|
||||||
|
|||||||
@@ -118,9 +118,10 @@ class Form
|
|||||||
* @param boolean $perm Permission to allow button to edit parameter
|
* @param boolean $perm Permission to allow button to edit parameter
|
||||||
* @param string $typeofdata Type of data ('string' by default, 'email', 'numeric:99', 'text' or 'textarea', 'day' or 'datepicker', 'ckeditor:dolibarr_zzz:width:height', 'select:xxx'...)
|
* @param string $typeofdata Type of data ('string' by default, 'email', 'numeric:99', 'text' or 'textarea', 'day' or 'datepicker', 'ckeditor:dolibarr_zzz:width:height', 'select:xxx'...)
|
||||||
* @param string $editvalue When in edit mode, use this value as $value instead of value
|
* @param string $editvalue When in edit mode, use this value as $value instead of value
|
||||||
|
* @param object $extObject External object
|
||||||
* @return string HTML edit field
|
* @return string HTML edit field
|
||||||
*/
|
*/
|
||||||
function editfieldval($text,$htmlname,$value,$object,$perm,$typeofdata='string',$editvalue='')
|
function editfieldval($text,$htmlname,$value,$object,$perm,$typeofdata='string',$editvalue='',$extObject=false)
|
||||||
{
|
{
|
||||||
global $conf,$langs,$db;
|
global $conf,$langs,$db;
|
||||||
$ret='';
|
$ret='';
|
||||||
@@ -128,7 +129,7 @@ class Form
|
|||||||
// When option to edit inline is activated
|
// When option to edit inline is activated
|
||||||
if (! empty($conf->global->MAIN_USE_JQUERY_JEDITABLE))
|
if (! empty($conf->global->MAIN_USE_JQUERY_JEDITABLE))
|
||||||
{
|
{
|
||||||
$ret.=$this->editInPlace($object, $value, $htmlname, $perm, $typeofdata);
|
$ret.=$this->editInPlace($object, $value, $htmlname, $perm, $typeofdata, $extObject);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -193,9 +194,10 @@ class Form
|
|||||||
* @param string $htmlname DIV ID (field name)
|
* @param string $htmlname DIV ID (field name)
|
||||||
* @param int $condition Condition to edit
|
* @param int $condition Condition to edit
|
||||||
* @param string $inputType Type of input ('numeric', 'datepicker', 'textarea', 'ckeditor:dolibarr_zzz', 'select:xxx')
|
* @param string $inputType Type of input ('numeric', 'datepicker', 'textarea', 'ckeditor:dolibarr_zzz', 'select:xxx')
|
||||||
|
* @param object $extObject External object
|
||||||
* @return string HTML edit in place
|
* @return string HTML edit in place
|
||||||
*/
|
*/
|
||||||
private function editInPlace($object, $value, $htmlname, $condition, $inputType='textarea')
|
private function editInPlace($object, $value, $htmlname, $condition, $inputType='textarea', $extObject=false)
|
||||||
{
|
{
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
@@ -208,28 +210,58 @@ class Form
|
|||||||
|
|
||||||
if ($condition)
|
if ($condition)
|
||||||
{
|
{
|
||||||
|
$element = false;
|
||||||
|
$table_element = false;
|
||||||
|
$fk_element = false;
|
||||||
|
$loadmethod = false;
|
||||||
|
$savemethod = false;
|
||||||
|
$ext_element = false;
|
||||||
|
//$ext_table_element = false;
|
||||||
|
//$ext_fk_element = false;
|
||||||
|
|
||||||
|
if (is_object($object))
|
||||||
|
{
|
||||||
|
$element = $object->element;
|
||||||
|
$table_element = $object->table_element;
|
||||||
|
$fk_element = $object->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_object($extObject))
|
||||||
|
{
|
||||||
|
$ext_element = $extObject->element;
|
||||||
|
//$ext_table_element = $extObject->table_element;
|
||||||
|
//$ext_fk_element = $extObject->id;
|
||||||
|
}
|
||||||
|
|
||||||
if (preg_match('/^(string|email|numeric)/',$inputType))
|
if (preg_match('/^(string|email|numeric)/',$inputType))
|
||||||
{
|
{
|
||||||
$tmp=explode(':',$inputType);
|
$tmp=explode(':',$inputType);
|
||||||
$inputType=$tmp[0]; $inputOption=$tmp[1];
|
$inputType=$tmp[0]; $inputOption=$tmp[1];
|
||||||
|
if (! empty($tmp[2])) $savemethod=$tmp[2];
|
||||||
}
|
}
|
||||||
if ($inputType == 'datepicker')
|
if (preg_match('/^datepicker/',$inputType))
|
||||||
{
|
{
|
||||||
|
$tmp=explode(':',$inputType);
|
||||||
|
$inputType=$tmp[0]; $inputOption=$tmp[1];
|
||||||
|
if (! empty($tmp[2])) $savemethod=$tmp[2];
|
||||||
|
|
||||||
$out.= '<input id="timestamp_'.$htmlname.'" type="hidden"/>'."\n"; // Use for timestamp format
|
$out.= '<input id="timestamp_'.$htmlname.'" type="hidden"/>'."\n"; // Use for timestamp format
|
||||||
}
|
}
|
||||||
else if (preg_match('/^select/',$inputType))
|
else if (preg_match('/^select/',$inputType))
|
||||||
{
|
{
|
||||||
$tmp=explode(':',$inputType);
|
$tmp=explode(':',$inputType);
|
||||||
$inputType=$tmp[0]; $inputOption=$tmp[1];
|
$inputType=$tmp[0]; $loadmethod=$tmp[1];
|
||||||
$out.= '<input id="loadmethod_'.$htmlname.'" value="'.$inputOption.'" type="hidden"/>'."\n";
|
if (! empty($tmp[2])) $savemethod=$tmp[2];
|
||||||
}
|
}
|
||||||
else if (preg_match('/^ckeditor/',$inputType))
|
else if (preg_match('/^ckeditor/',$inputType))
|
||||||
{
|
{
|
||||||
$tmp=explode(':',$inputType);
|
$tmp=explode(':',$inputType);
|
||||||
$inputType=$tmp[0]; $inputOption=$tmp[1];
|
$inputType=$tmp[0]; $toolbar=$tmp[1];
|
||||||
|
if (! empty($tmp[2])) $savemethod=$tmp[2];
|
||||||
|
|
||||||
if (! empty($conf->fckeditor->enabled))
|
if (! empty($conf->fckeditor->enabled))
|
||||||
{
|
{
|
||||||
$out.= '<input id="ckeditor_toolbar" value="'.$inputOption.'" type="hidden"/>'."\n";
|
$out.= '<input id="ckeditor_toolbar" value="'.$toolbar.'" type="hidden"/>'."\n";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -237,9 +269,14 @@ class Form
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$out.= '<input id="element_'.$htmlname.'" value="'.$object->element.'" type="hidden">'."\n";
|
$out.= '<input id="element_'.$htmlname.'" value="'.$element.'" type="hidden"/>'."\n";
|
||||||
$out.= '<input id="table_element_'.$htmlname.'" value="'.$object->table_element.'" type="hidden">'."\n";
|
$out.= '<input id="table_element_'.$htmlname.'" value="'.$table_element.'" type="hidden"/>'."\n";
|
||||||
$out.= '<input id="fk_element_'.$htmlname.'" value="'.$object->id.'" type="hidden">'."\n";
|
$out.= '<input id="fk_element_'.$htmlname.'" value="'.$fk_element.'" type="hidden"/>'."\n";
|
||||||
|
$out.= '<input id="loadmethod_'.$htmlname.'" value="'.$loadmethod.'" type="hidden"/>'."\n";
|
||||||
|
$out.= '<input id="savemethod_'.$htmlname.'" value="'.$savemethod.'" type="hidden"/>'."\n";
|
||||||
|
$out.= '<input id="ext_element_'.$htmlname.'" value="'.$ext_element.'" type="hidden"/>'."\n";
|
||||||
|
//$out.= '<input id="ext_table_element_'.$htmlname.'" value="'.$ext_table_element.'" type="hidden"/>'."\n";
|
||||||
|
//$out.= '<input id="ext_fk_element_'.$htmlname.'" value="'.$ext_fk_element.'" type="hidden"/>'."\n";
|
||||||
|
|
||||||
$out.= '<div id="val_'.$htmlname.'" class="editval_'.$inputType.'">'.$value.'</div>'."\n";
|
$out.= '<div id="val_'.$htmlname.'" class="editval_'.$inputType.'">'.$value.'</div>'."\n";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -206,7 +206,7 @@ $(document).ready(function() {
|
|||||||
onblur : 'ignore',
|
onblur : 'ignore',
|
||||||
cssclass : 'flat',
|
cssclass : 'flat',
|
||||||
tooltip : tooltipInPlace,
|
tooltip : tooltipInPlace,
|
||||||
placeholder : placeholderInPlace,
|
placeholder : ' ',
|
||||||
cancel : cancelInPlace,
|
cancel : cancelInPlace,
|
||||||
submit : submitInPlace,
|
submit : submitInPlace,
|
||||||
indicator : indicatorInPlace,
|
indicator : indicatorInPlace,
|
||||||
@@ -246,22 +246,24 @@ $(document).ready(function() {
|
|||||||
var element = $( '#element_' + htmlname ).val();
|
var element = $( '#element_' + htmlname ).val();
|
||||||
var table_element = $( '#table_element_' + htmlname ).val();
|
var table_element = $( '#table_element_' + htmlname ).val();
|
||||||
var fk_element = $( '#fk_element_' + htmlname ).val();
|
var fk_element = $( '#fk_element_' + htmlname ).val();
|
||||||
var method = false;
|
var loadmethod = $( '#loadmethod_' + htmlname ).val();
|
||||||
var timestamp = false;
|
var savemethod = $( '#savemethod_' + htmlname ).val();
|
||||||
|
|
||||||
if (type == 'select') {
|
|
||||||
var method = $( '#loadmethod_' + htmlname ).val();
|
|
||||||
} else if (type == 'datepicker') {
|
|
||||||
var timestamp = $('#timestamp_' + htmlname ).val();
|
var timestamp = $('#timestamp_' + htmlname ).val();
|
||||||
}
|
var ext_element = $( '#ext_element_' + htmlname ).val();
|
||||||
|
//var ext_table_element = $( '#ext_table_element_' + htmlname ).val();
|
||||||
|
//var ext_fk_element = $( '#ext_fk_element_' + htmlname ).val();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
type: type,
|
type: type,
|
||||||
element: element,
|
element: element,
|
||||||
table_element: table_element,
|
table_element: table_element,
|
||||||
fk_element: fk_element,
|
fk_element: fk_element,
|
||||||
method: method,
|
loadmethod: loadmethod,
|
||||||
timestamp: timestamp
|
savemethod: savemethod,
|
||||||
|
timestamp: timestamp,
|
||||||
|
ext_element: ext_element,
|
||||||
|
//ext_table_element: ext_table_element,
|
||||||
|
//ext_fk_element: ext_fk_element
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user