Bläddra i källkod

Added support of CSS classes for styling the form

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@2787 a333f486-631f-4898-b8df-5754b55c2be0
dflaven 12 år sedan
förälder
incheckning
52ea8ffa90
1 ändrade filer med 48 tillägg och 9 borttagningar
  1. 48 9
      application/forms.class.inc.php

+ 48 - 9
application/forms.class.inc.php

@@ -254,7 +254,7 @@ EOF
 	{
 	{
 		$sDialogTitle = addslashes($sDialogTitle);
 		$sDialogTitle = addslashes($sDialogTitle);
 		$sOkButtonLabel = addslashes($sOkButtonLabel);
 		$sOkButtonLabel = addslashes($sOkButtonLabel);
-		$sCancelButtonLabel = 'Cancel'; //TODO: localize
+		$sCancelButtonLabel = Dict::S('UI:Button:Cancel');
 		$oPage->add("<div id=\"$sDialogId\">");
 		$oPage->add("<div id=\"$sDialogId\">");
 		$this->Render($oPage);
 		$this->Render($oPage);
 		$oPage->add('</div>');
 		$oPage->add('</div>');
@@ -489,6 +489,7 @@ class DesignerFormField
 	protected $bMandatory;
 	protected $bMandatory;
 	protected $bReadOnly;
 	protected $bReadOnly;
 	protected $bAutoApply;
 	protected $bAutoApply;
+	protected $aCSSClasses;
 	
 	
 	public function __construct($sCode, $sLabel, $defaultValue)
 	public function __construct($sCode, $sLabel, $defaultValue)
 	{
 	{
@@ -498,6 +499,7 @@ class DesignerFormField
 		$this->bMandatory = false;
 		$this->bMandatory = false;
 		$this->bReadOnly = false;
 		$this->bReadOnly = false;
 		$this->bAutoApply = false;
 		$this->bAutoApply = false;
+		$this->aCSSClasses = array();
 	}
 	}
 	
 	
 	public function GetCode()
 	public function GetCode()
@@ -574,6 +576,11 @@ class DesignerFormField
 	{
 	{
 		return true;
 		return true;
 	}
 	}
+	
+	public function AddCSSClass($sCSSClass)
+	{
+		$this->aCSSClasses[] = $sCSSClass;
+	}
 }
 }
 
 
 class DesignerLabelField extends DesignerFormField
 class DesignerLabelField extends DesignerFormField
@@ -633,7 +640,12 @@ $('#$sId').bind('change keyup validate', function() { ValidateWithPattern('$sId'
 }
 }
 EOF
 EOF
 );
 );
-		return array('label' => $this->sLabel, 'value' => "<input type=\"text\" id=\"$sId\" $sReadOnly name=\"$sName\" value=\"".htmlentities($this->defaultValue, ENT_QUOTES, 'UTF-8')."\">");
+		$sCSSClasses = '';
+		if (count($this->aCSSClasses) > 0)
+		{
+			$sCSSClasses = 'class="'.implode(' ', $this->aCSSClasses).'"';
+		}
+		return array('label' => $this->sLabel, 'value' => "<input type=\"text\" $sCSSClasses id=\"$sId\" $sReadOnly name=\"$sName\" value=\"".htmlentities($this->defaultValue, ENT_QUOTES, 'UTF-8')."\">");
 	}
 	}
 
 
 	public function ReadParam(&$aValues)
 	public function ReadParam(&$aValues)
@@ -665,7 +677,12 @@ $('#$sId').bind('change keyup validate', function() { ValidateWithPattern('$sId'
 }
 }
 EOF
 EOF
 );
 );
-		return array('label' => $this->sLabel, 'value' => "<textarea id=\"$sId\" $sReadOnly name=\"$sName\">".htmlentities($this->defaultValue, ENT_QUOTES, 'UTF-8')."</textarea>");
+		$sCSSClasses = '';
+		if (count($this->aCSSClasses) > 0)
+		{
+			$sCSSClasses = 'class="'.implode(' ', $this->aCSSClasses).'"';
+		}
+		return array('label' => $this->sLabel, 'value' => "<textarea $sCSSClasses id=\"$sId\" $sReadOnly name=\"$sName\">".htmlentities($this->defaultValue, ENT_QUOTES, 'UTF-8')."</textarea>");
 	}
 	}
 }
 }
 
 
@@ -709,13 +726,18 @@ class DesignerComboField extends DesignerFormField
 		$sChecked = $this->defaultValue ? 'checked' : '';
 		$sChecked = $this->defaultValue ? 'checked' : '';
 		$sMandatory = $this->bMandatory ? 'true' :  'false';
 		$sMandatory = $this->bMandatory ? 'true' :  'false';
 		$sReadOnly = $this->IsReadOnly() ? 'disabled="disabled"' :  '';
 		$sReadOnly = $this->IsReadOnly() ? 'disabled="disabled"' :  '';
+		$sCSSClasses = '';
+		if (count($this->aCSSClasses) > 0)
+		{
+			$sCSSClasses = 'class="'.implode(' ', $this->aCSSClasses).'"';
+		}
 		if ($this->bMultipleSelection)
 		if ($this->bMultipleSelection)
 		{
 		{
-			$sHtml = "<select multiple size=\"8\"id=\"$sId\" name=\"$sName\" $sReadOnly>";
+			$sHtml = "<select $sCSSClasses multiple size=\"8\"id=\"$sId\" name=\"$sName\" $sReadOnly>";
 		}
 		}
 		else
 		else
 		{
 		{
-			$sHtml = "<select id=\"$sId\" name=\"$sName\" $sReadOnly>";
+			$sHtml = "<select $sCSSClasses id=\"$sId\" name=\"$sName\" $sReadOnly>";
 			$sHtml .= "<option value=\"\">".Dict::S('UI:SelectOne')."</option>";
 			$sHtml .= "<option value=\"\">".Dict::S('UI:SelectOne')."</option>";
 		}
 		}
 		foreach($this->aAllowedValues as $sKey => $sDisplayValue)
 		foreach($this->aAllowedValues as $sKey => $sDisplayValue)
@@ -770,7 +792,12 @@ class DesignerBooleanField extends DesignerFormField
 		$sChecked = $this->defaultValue ? 'checked' : '';
 		$sChecked = $this->defaultValue ? 'checked' : '';
 		$sReadOnly = $this->IsReadOnly() ? 'disabled' :  ''; // readonly does not work as expected on checkboxes:
 		$sReadOnly = $this->IsReadOnly() ? 'disabled' :  ''; // readonly does not work as expected on checkboxes:
 															 // readonly prevents the user from changing the input's value not its state (checked/unchecked)
 															 // readonly prevents the user from changing the input's value not its state (checked/unchecked)
-		return array('label' => $this->sLabel, 'value' => "<input type=\"checkbox\" $sChecked $sReadOnly id=\"$sId\" name=\"$sName\" value=\"true\">");
+		$sCSSClasses = '';
+		if (count($this->aCSSClasses) > 0)
+		{
+			$sCSSClasses = 'class="'.implode(' ', $this->aCSSClasses).'"';
+		}
+		return array('label' => $this->sLabel, 'value' => "<input $sCSSClasses type=\"checkbox\" $sChecked $sReadOnly id=\"$sId\" name=\"$sName\" value=\"true\">");
 	}
 	}
 	
 	
 	public function ReadParam(&$aValues)
 	public function ReadParam(&$aValues)
@@ -862,11 +889,12 @@ class DesignerIconSelectionField extends DesignerFormField
 			}
 			}
 		}
 		}
 		$sJSItems = json_encode($this->aAllowedValues);
 		$sJSItems = json_encode($this->aAllowedValues);
+		$sPostUploadTo = ($this->sUploadUrl == null) ? 'null' : "'{$this->sUploadUrl}'";
 		if (!$this->IsReadOnly())
 		if (!$this->IsReadOnly())
 		{
 		{
 			$oP->add_ready_script(
 			$oP->add_ready_script(
 <<<EOF
 <<<EOF
-	$('#$sId').icon_select({current_idx: $idx, items: $sJSItems});
+	$('#$sId').icon_select({current_idx: $idx, items: $sJSItems, post_upload_to: $sPostUploadTo});
 EOF
 EOF
 			);
 			);
 		}
 		}
@@ -960,7 +988,13 @@ class DesignerSortableField extends DesignerFormField
 		$bOpen = false;
 		$bOpen = false;
 		$sId = $this->oForm->GetFieldId($this->sCode);
 		$sId = $this->oForm->GetFieldId($this->sCode);
 		$sName = $this->oForm->GetFieldName($this->sCode);
 		$sName = $this->oForm->GetFieldName($this->sCode);
-		$sHtml = "<span class=\"sort_$sId fieldslist\" id=\"sortable_$sId\">";
+		$sCSSClasses = '';
+		$this->aCSSClasses[] = "sort_$sId fieldslist";
+		if (count($this->aCSSClasses) > 0)
+		{
+			$sCSSClasses = 'class="'.implode(' ', $this->aCSSClasses).'"';
+		}
+		$sHtml = "<span $sCSSClasses id=\"sortable_$sId\">";
 		foreach($this->defaultValue as $sValue)
 		foreach($this->defaultValue as $sValue)
 		{
 		{
 			$sHtml .= "<span class=\"movable_attr\">$sValue</span>";
 			$sHtml .= "<span class=\"movable_attr\">$sValue</span>";
@@ -1016,7 +1050,12 @@ class DesignerFormSelectorField extends DesignerFormField
 		$sName = $this->oForm->GetFieldName($this->sCode);
 		$sName = $this->oForm->GetFieldName($this->sCode);
 		$sReadOnly = $this->IsReadOnly() ? 'disabled="disabled"' :  '';
 		$sReadOnly = $this->IsReadOnly() ? 'disabled="disabled"' :  '';
 		
 		
-		$sHtml = "<select id=\"$sId\" name=\"$sName\" $sReadOnly>";
+		$sCSSClasses = '';
+		if (count($this->aCSSClasses) > 0)
+		{
+			$sCSSClasses = 'class="'.implode(' ', $this->aCSSClasses).'"';
+		}
+		$sHtml = "<select $sCSSClasses id=\"$sId\" name=\"$sName\" $sReadOnly>";
 		foreach($this->aSubForms as $sKey => $aFormData)
 		foreach($this->aSubForms as $sKey => $aFormData)
 		{
 		{
 			$sDisplayValue = $aFormData['label'];
 			$sDisplayValue = $aFormData['label'];