PageRenderTime 42ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/rmcommon/tags/rmcommon-2.1.2b/class/fields/modules.class.php

http://bitcero-modules.googlecode.com/
PHP | 185 lines | 129 code | 16 blank | 40 comment | 15 complexity | 08dfac4095c13defd599f960f3b007fc MD5 | raw file
Possible License(s): LGPL-2.1
  1. <?php
  2. // $Id$
  3. // --------------------------------------------------------------
  4. // Red México Common Utilities
  5. // A framework for Red México Modules
  6. // Author: Eduardo Cortés <i.bitcero@gmail.com>
  7. // Email: i.bitcero@gmail.com
  8. // License: GPL 2.0
  9. // --------------------------------------------------------------
  10. class RMFormModules extends RMFormElement
  11. {
  12. private $multi = 0;
  13. private $type = 0;
  14. private $selected = null;
  15. private $cols = 2;
  16. private $inserted = array();
  17. private $dirnames = true;
  18. private $subpages = 0;
  19. private $selectedSubPages = array();
  20. /**
  21. * Constructor
  22. * @param string $caption
  23. * @param string $name Nombre del campo
  24. * @param int $multi Selecciona multiple activada o desactivada
  25. * @param int $type 0 = Select, 1 = Tabla
  26. * @param array $selected Valor seleccionado por defecto
  27. * @param array $selected Grupo de vlores seleccionado por defecto
  28. * @param int $cols Numero de columnas para la tabla o filas para un campo select multi
  29. * @param array $insert Array con valores para agregar a la lista
  30. * @param bool $dirnames Devolver nombres de directorios (true) o ids (false)
  31. * @param int Mostrar Subpáginas
  32. */
  33. function __construct($caption, $name, $multi = 0, $type = 0, $selected = null, $cols = 2, $insert = null, $dirnames = true, $subpages = 0){
  34. $this->setName($multi ? str_replace('[]', '', $name) : $name);
  35. $this->setCaption($caption);
  36. $this->multi = $multi;
  37. $this->type = $type;
  38. $this->cols = $cols;
  39. $this->selected = isset($_REQUEST[$name]) ? $_REQUEST[$name] : $selected;
  40. $this->inserted = $insert;
  41. $this->dirnames = $dirnames;
  42. $this->subpages = $subpages;
  43. !defined('RM_FRAME_APPS_CREATED') ? define('RM_FRAME_APPS_CREATED', 1) : '';
  44. }
  45. public function multi(){
  46. return $this->multi;
  47. }
  48. public function setMulti($value){
  49. if ($value==0 || $value==1){
  50. //$this->setName($value ? str_replace('[]','',$this->getName()).'[]' : str_replace('[]','',$this->getName()));
  51. $this->multi = $value;
  52. }
  53. }
  54. public function type(){
  55. return $this->type;
  56. }
  57. public function setType($value){
  58. return $this->type = $value;
  59. }
  60. public function selected(){
  61. return $this->selected;
  62. }
  63. public function setSelected($value){
  64. return $this->selected = $value;
  65. }
  66. public function sizeOrCols(){
  67. return $this->cols;
  68. }
  69. public function setSizeOrCols($value){
  70. return $this->cols = $value;
  71. }
  72. public function inserted(){
  73. return $this->inserted;
  74. }
  75. /**
  76. * Inserta nuevas opciones en el campo
  77. * @param array $value Array con valor=>caption para las opciones a insertar
  78. */
  79. public function setInserted($value){
  80. $this->inserted = array();
  81. $this->inserted = $value;
  82. }
  83. public function dirnames(){
  84. return $this->dirnames;
  85. }
  86. /**
  87. * Establece si se devuelven los valores con
  88. * el nombre del directorio del módulo o con
  89. * el identificador del módulo
  90. * @param bool $value
  91. */
  92. public function setDirNames($value = true){
  93. $this->dirnames = $value;
  94. }
  95. /**
  96. * @desc Establece las subpáginas seleccionadas por defecto
  97. * @param array Subpáginas seleccionadas
  98. */
  99. public function subpages($subs){
  100. $this->selectedSubPages = $subs;
  101. }
  102. function render(){
  103. $module_handler =& xoops_gethandler('module');
  104. $criteria = new CriteriaCompo(new Criteria('hasmain', 1));
  105. $criteria->add(new Criteria('isactive', 1));
  106. $modules = array();
  107. $modules[0] = __('All','rmcommon');
  108. if (is_array($this->inserted)) $modules = $this->inserted;
  109. foreach ($module_handler->getList($criteria, $this->dirnames) as $k => $v){
  110. $modules[$k] = $v;
  111. }
  112. if ($this->type){
  113. // Add js script
  114. RMTemplate::get()->add_local_script('modules_field.js', 'rmcommon', 'include');
  115. $rtn = '<div class="modules_field">';
  116. $i = 1;
  117. foreach ($modules as $k => $v){
  118. $app = RMFunctions::load_module($k);
  119. $rtn .= "<div class=\"mod_item\">";
  120. $name = $this->multi ? $this->getName()."[$k]" : $this->getName();
  121. if ($this->multi){
  122. $rtn .= "<label id=\"modlabel-$k\" class='field_module_names'><input type='checkbox' value='$k' name='".$name."' id='".$this->getName()."-$k'".(is_array($this->selected) ? (in_array($k, $this->selected) ? " checked='checked'" : '') : '')." /> $v</label>";
  123. } else {
  124. $rtn .= "<label id=\"modlabel-$k\" class=\"field_module_names\"><input type='radio' value='$k' name='".$this->getName()."' id='".$this->getName()."-$k'".(!empty($this->selected) ? ($k == $this->selected ? " checked='checked'" : '') : '')." /> $v</label>";
  125. }
  126. /**
  127. * Mostramos las subpáginas
  128. */
  129. if ($this->subpages && $k>0){
  130. $subpages = $app->getInfo('subpages');
  131. $selected = $this->selectedSubPages;
  132. $cr = 0;
  133. $rtn.="<div id=\"subpages-".$k."\" class=\"subpages_container\">
  134. <div class='sp_title'><span id=\"close-$k\"></span>".__('Inner pages','rmcommon')."</div>
  135. <div class='sub_item'>
  136. <label><input type='checkbox' name='".$name."[subpages][0]' id='subpages[$k][0]' value='--'".(!is_array($subpages) || @in_array('--', $selected[$k]) ? " checked='checked'" : '')." onclick=\"checkSubpageClick('subpages[$k][0]','$k',$k);\" /> ".__('All','rmcommon')."</label></div>";
  137. $j = 2;
  138. $cr = 2;
  139. if (!is_array($subpages)) $subpages = array();
  140. foreach ($subpages as $page=>$caption){
  141. $rtn.="<div class=\"sub_item\"><label><input type='checkbox' name='".$name."[subpages][$page]' id='subpages[$k][$page]' value='$page'".(is_array($subpages) && @in_array($page, $selected[$k]) ? " checked='checked'" : '')." onclick=\"checkSubpageClick('subpages[$k][$page]', $k);\" /> $caption</label></div>";
  142. $j++;
  143. $cr++;
  144. }
  145. $rtn.='</div>';
  146. }
  147. $rtn .= "</div>";
  148. $i++;
  149. }
  150. $rtn .= "</div>";
  151. } else {
  152. if ($this->multi){
  153. $name = $this->getName()."[$k]";
  154. $rtn = "<select name='".$name."' id='".$name."' size='$this->cols' multiple='multiple'>";
  155. foreach ($modules as $k => $v){
  156. $rtn .= "<option value='$k'".(is_array($this->selected) ? (in_array($k, $this->selected) ? " selected='selected'" : '') : '').">$v</option>";
  157. }
  158. $rtn .= "</select>";
  159. } else {
  160. $rtn = "<select name='".$this->getName()."' id='".$this->getName()."'>";
  161. foreach ($modules as $k => $v){
  162. $rtn .= "<option value='$k'".(!empty($this->selected) ? ($k==$this->selected ? " selected='selected'" : '') : '').">$v</option>";
  163. }
  164. $rtn .= "</select>";
  165. }
  166. }
  167. return $rtn;
  168. }
  169. }