예제 #1
0
 public function __construct($dict = array())
 {
     $this->model = Functions::nz($dict['model'], false);
     $test = debug_backtrace();
     $classtraceindex = 1;
     if (strpos($this->model, '\\') === false) {
         $orgmodel = $this->model;
         $pos = strrpos($test[1][self::STR_CLASS], '\\');
         $this->model = substr($test[1][self::STR_CLASS], 0, $pos + 1) . $this->model;
         if (substr($this->model, 0, 13) == 'penguin\\model') {
             $classtraceindex = 2;
             $pos = strrpos($test[2][self::STR_CLASS], '\\');
             $this->model = substr($test[2][self::STR_CLASS], 0, $pos + 1) . $orgmodel;
         }
     }
     $model = $this->model;
     /* @var $model BaseModel */
     if (!class_exists($model)) {
         throw new ModelException("Class: {$model} doesn't exist");
     }
     $mymodel = $test[$classtraceindex][self::STR_CLASS];
     $this->related_name = Functions::nz($dict['related_name'], $mymodel::getName());
     $model::init();
     $model::addHas($test[$classtraceindex][self::STR_CLASS], $this);
     parent::__construct($dict);
 }
예제 #2
0
 public function index($args)
 {
     $t = Registry::getInstance()->twig->loadTemplate('form/filepicker.tpl');
     $c = array();
     $localpath = Functions::nz($args['path'], '');
     $mediapath = SITE_PATH . '/media/';
     $dir = new \DirectoryIterator($mediapath . $localpath);
     $picformats = array('png', 'jpg', 'gif');
     $files = array();
     foreach ($dir as $file) {
         if (!$dir->isDot()) {
             $path = URL_PATH . '/media/' . $localpath . $file;
             $f = new \stdClass();
             if (strlen($file) > 4 && in_array(substr($file, -3), $picformats)) {
                 $picture = $path;
             } elseif ($dir->isDir()) {
                 $picture = TEMPLATE_PATH . 'form/pics/folder.png';
             } else {
                 $picture = TEMPLATE_PATH . 'form/pics/file.png';
             }
             $f->path = $localpath;
             $f->picture = $picture;
             $f->name = (string) $file;
             $f->type = $dir->isDir() ? 'dir' : 'file';
             $files[] = $f;
         }
     }
     $c['files'] = $files;
     $t->display($c);
 }
예제 #3
0
 public function __construct($dict = array())
 {
     $this->primary = Functions::nz($dict['primary'], false);
     $this->default = Functions::nz($dict['default'], null);
     $this->extra = Functions::nz($dict['extra'], null);
     $this->allownull = Functions::nz($dict['allownull'], false);
 }
예제 #4
0
 public function __construct($dict = array())
 {
     $this->size = Functions::nz($dict['size'], 10);
     if (!isset($dict['default'])) {
         $dict['default'] = 0;
     }
     parent::__construct($dict);
 }
예제 #5
0
 public function __construct($dict = array())
 {
     $this->maxlength = Functions::nz($dict['maxlength'], 255);
     if (!isset($dict['default'])) {
         $dict['default'] = '';
     }
     parent::__construct($dict);
 }
예제 #6
0
파일: DateBox.php 프로젝트: johsbk/penguin
 public static function display($dict)
 {
     $name = Functions::nz($dict['name'], '');
     $default = Functions::nz($dict['default'], '');
     $governs = Functions::nz($dict['governs'], false);
     $onchange = Functions::nz($dict['onchange'], false);
     $width = Functions::nz($dict['width'], 80);
     $eu = Functions::nz($dict['eu'], false);
     if ($governs) {
         $onchange = "location = '" . Functions::getArgs($governs) . "&{$governs}='+\$('input[name={$name}]').val()";
     }
     $out = array();
     $out[] = '<div style="display:inline; white-space: nowrap;"><input type="text" ' . ($onchange ? "onchange=\"{$onchange}\"" : '') . " style=\"width: {$width}px\" name=\"{$name}\" value=\"{$default}\" /><input type=\"button\" value=\"#\" onclick=\"DateBox.display(this.previousSibling," . ($eu ? 'true' : 'false') . ')" /></div>';
     return implode("\n", $out);
 }
예제 #7
0
파일: Router.php 프로젝트: johsbk/penguin
 public function redirect($to = '')
 {
     if ($to == '') {
         $to = Functions::getArgs('');
     }
     header('Location: ' . $to);
     exit(0);
 }
예제 #8
0
 public static function formDict($dict = array())
 {
     $showfields = Functions::nz($dict['fields'], false);
     $dict['table'] = static::getName();
     $fields = array();
     foreach (static::getFields() as $f) {
         if ($showfields && (array_key_exists($f->name, $showfields) || in_array($f->name, $showfields)) || !$showfields) {
             $field = Functions::nz($showfields[$f->name], array());
             $field['name'] = $f->dbname;
             if (!isset($field['type'])) {
                 $field['type'] = $f->getFormType();
             }
             if ($f instanceof ForeignKeyField) {
                 $m = $f->model;
                 $field['dict'] = array('model' => $m::all());
             } elseif ($f instanceof EnumField) {
                 $foptions = array();
                 foreach ($f->options as $option) {
                     $foptions[] = array('name' => $option);
                 }
                 $field['dict'] = array('array' => $foptions, 'hidden' => 'name');
             }
             $fields[] = $field;
         }
     }
     $dict['fields'] = $fields;
     return $dict;
 }
예제 #9
0
 public function __construct($dict = array())
 {
     $this->size = Functions::nz($dict['size'], 5);
     parent::__construct($dict);
 }
예제 #10
0
 public function __construct($dict = array())
 {
     $this->options = Functions::nz($dict['options'], array());
     parent::__construct($dict);
 }
예제 #11
0
파일: Form.php 프로젝트: johsbk/penguin
 private static function displayField($formid, $f, $allFields, $line = false, $row = false)
 {
     $out = array();
     $hidden = false;
     if ($line !== false) {
         $inputname = "{$formid}_{$f['name']}_{$line}";
         $onchange = "Form.makedirty('{$formid}',{$line})";
     } else {
         $inputname = "{$formid}_{$f['name']}_new";
         $onchange = false;
     }
     $type = isset($f['type']) ? $f['type'] : $allFields[$f['name']]['type'];
     $default = Functions::nz($f['default'], '');
     if ($row) {
         $default = $row[$f['name']];
     }
     if ($type == 'combobox') {
         $dict = Functions::nz($f['dict'], false);
         if (!$dict) {
             throw new FormException('No dict');
         }
         $dict['default'] = $default;
         $dict['name'] = $inputname;
         $dict['onchange'] = $onchange;
         $dict['class'] = 'form-control';
         $out[] = ComboBox::display($dict);
     } elseif ($type == 'hidden') {
         $hidden = true;
         $out[] = "<input type=\"hidden\" name=\"{$inputname}\" value=\"{$default}\" />";
     } elseif ($type == 'date') {
         if ($default != '') {
             $d = new Date();
             $d->fromUS($default);
             $default = $d->toEU();
         }
         $dict = array('name' => $inputname, 'default' => $default, 'eu' => true, 'onchange' => $onchange);
         $out[] = DateBox::display($dict);
     } elseif ($type == 'image' || $type == 'file') {
         $txt = '';
         if ($default != '') {
             if ($type == 'image') {
                 $txt .= '<input class="btn btn-default" type="button" onclick="$.fancybox({href:$(this.nextSibling).val()});" value="Show">';
             } else {
                 $txt .= "<input class=\"btn btn-default\" type=\"button\" onclick=\"window.open(\$(this.nextSibling).val(),'_blank');\" value=\"Open\">";
             }
         }
         $txt .= "<input type=\"hidden\" name=\"{$inputname}\" value=\"{$default}\" " . ($onchange ? " onchange=\"{$onchange}\"" : '') . ' /><input type="button" onclick="Form.pickfile(this.previousSibling)" value="Pick">';
         $out[] = $txt;
     } elseif ($type == 'checkbox') {
         $out[] = '<input class="form-control" type="checkbox"' . ($onchange ? " onchange=\"{$onchange}\"" : '') . " name=\"{$inputname}\"" . ($default == 'true' ? 'checked="checked"' : '') . '/>';
     } elseif ($type == 'int') {
         $out[] = '<input class="form-control"' . ($onchange ? " onchange=\"{$onchange}\"" : '') . ' style="width: ' . Functions::nz($f['width'], 100) . "px;text-align:right;\" type=\"text\" value=\"{$default}\" name=\"{$inputname}\" />";
     } elseif ($type == 'real') {
         $out[] = '<input class="form-control"' . ($onchange ? " onchange=\"{$onchange}\"" : '') . ' style="width: ' . Functions::nz($f['width'], 100) . 'px;text-align:right;" type="text" value="' . str_replace('.', ',', $default) . "\" name=\"{$inputname}\" />";
     } else {
         $out[] = '<input class="form-control"' . ($onchange ? " onchange=\"{$onchange}\"" : '') . ' style="width: ' . Functions::nz($f['width'], 100) . "px;\" type=\"text\" value=\"{$default}\" name=\"{$inputname}\" />";
     }
     return array($hidden, implode("\n", $out));
 }
예제 #12
0
파일: ComboBox.php 프로젝트: johsbk/penguin
 /**
  * @param $dict
  *
  * @return string
  */
 public static function display($dict)
 {
     $rs = Functions::nz($dict['rs'], false);
     $array = Functions::nz($dict['array'], false);
     $model = Functions::nz($dict['model'], false);
     if ($rs === false && $array === false && $model === false) {
         throw new FormException('ComboBox: no rs,model or array supplied!');
     }
     $hidden = Functions::nz($dict['hidden'], 'id');
     $shown = Functions::nz($dict['shown'], 'name');
     $default = Functions::nz($dict['default'], false);
     $firstoption = Functions::nz($dict['firstoption'], false);
     $governs = Functions::nz($dict['governs'], false);
     $out = static::displayElementStart($dict);
     if ($firstoption) {
         if (!is_array($firstoption)) {
             throw new FormException('Fix firstoption!');
         }
         $val = Functions::nz($firstoption['value'], '.');
         $out[] = "<option value=\"{$val}\">" . $firstoption['option'] . '</option>';
     }
     if ($rs) {
         $rs->moveFirst();
         while ($row = $rs->next()) {
             $out[] = self::option($row, $governs, $hidden, $shown, $default);
         }
     } elseif ($array) {
         foreach ($array as $row) {
             $out[] = self::option($row, $governs, $hidden, $shown, $default);
         }
     } elseif ($model) {
         foreach ($model as $m) {
             $out[] = self::option($m->row(), $governs, $hidden, $shown, $default);
         }
     }
     $out[] = '</select>';
     return implode("\n", $out);
 }