示例#1
0
 public function __construct($model)
 {
     $this->renderWithType = 'select';
     $model = \ntentan\models\Model::load($model);
     $entity = Ntentan::singular($model->getName());
     $this->setLabel(Ntentan::toSentence($entity));
     $this->setName("{$entity}_id");
     $options = $model->getAll();
     foreach ($options as $option) {
         $this->option((string) $option, $option->id);
     }
 }
示例#2
0
 public function __construct($model, $submodel)
 {
     $this->renderWithType = 'select';
     $model = \ntentan\models\Model::load($model);
     $submodel = \ntentan\models\Model::load($submodel);
     $entity = Ntentan::singular($submodel->getName());
     $parentEntity = Ntentan::singular($model->getName());
     $this->setLabel(Ntentan::toSentence($entity));
     $this->setName("{$entity}_id");
     $parentId = "{$parentEntity}_id";
     $options = $model->getAll();
     foreach ($options as $option) {
         $suboptions = $submodel->getAll(array('conditions' => array($parentId => $option->id)));
         foreach ($suboptions as $suboption) {
             $this->option("{$option} / {$suboption}", $suboption->id);
         }
     }
 }
 public function trail_data($data = false)
 {
     if ($data === false) {
         if ($this->trailData === false) {
             $url = Ntentan::getUrl('/');
             $trailData = array(array('url' => $url, 'label' => 'Home'));
             foreach (explode('/', Ntentan::$requestedRoute) as $route) {
                 $url .= "{$route}/";
                 $trailData[] = array('url' => $url, 'label' => Ntentan::toSentence($route));
             }
             return $trailData;
         } else {
             return $this->trailData;
         }
     } else {
         $this->trailData = $data;
         return $this;
     }
 }
示例#4
0
 public function createModelField($field)
 {
     switch ($field["type"]) {
         case "double":
             $element = new api\TextField(ucwords(str_replace("_", " ", $field["name"])), $field["name"]);
             break;
         case "integer":
             if ($field["foreign_key"] === true) {
                 $element = new api\ModelField(ucwords(str_replace("_", " ", substr($field["name"], 0, strlen($field["name"]) - 3))), $field["model"]);
                 $element->name = $field["name"];
             } else {
                 $element = new api\TextField(ucwords(str_replace("_", " ", $field["name"])), $field["name"]);
             }
             break;
         case "string":
             $element = new api\TextField(Ntentan::toSentence($field["name"]), $field["name"]);
             break;
         case "text":
             $element = new api\TextArea(Ntentan::toSentence($field["name"]), $field["name"]);
             break;
         case "boolean":
             $element = new api\Checkbox(Ntentan::toSentence($field["name"]), $field["name"], "", 1);
             break;
         case "datetime":
         case "date":
             $element = new api\DateField(Ntentan::toSentence($field["name"]), $field["name"]);
             break;
         case "":
             throw new \Exception("Empty data type for {$field['name']}");
         default:
             throw new \Exception("Unknown data type {$field["type"]}");
     }
     if ($field["required"]) {
         $element->setRequired(true);
     }
     $element->setDescription($field["comment"]);
     return $element;
 }
示例#5
0
/**
 * A shortcut wrapper around the Ntentan::toSentence method
 * @param $string
 */
function s($string)
{
    return Ntentan::toSentence($string);
}
示例#6
0
 public function setPermissions()
 {
     $arguments = func_get_args();
     $id = array_shift($arguments);
     $role = $this->model->getFirstWithId($id);
     if (count($_POST) > 0) {
         foreach ($_POST as $permissionName => $path) {
             $permission = Model::load('system.permissions')->getFirst(array('conditions' => array('role_id' => $id, 'permission' => $permissionName)));
             if ($permission->count() == 0 && $path != 'no') {
                 $permission->setData(array('role_id' => $id, 'permission' => $permissionName, 'path' => $path, 'access' => true));
                 $permission->save();
             } else {
                 if ($path == 'no') {
                     $permission->access = false;
                     $permission->update();
                 } else {
                     $permission->access = true;
                     $permission->update();
                 }
             }
         }
         $role->menu_tree = json_encode($this->getMenuTree($role));
         $role->update();
     }
     $permissionItems = array();
     $baseRoute = implode('/', $arguments) . (count($arguments) > 0 ? '/' : '');
     $baseDirectory = Ntentan::$namespace . "/modules/{$baseRoute}";
     $dir = dir($baseDirectory);
     while (false !== ($entry = $dir->read())) {
         if ($entry == '.' || $entry == '..') {
             continue;
         }
         $path = getcwd() . "/{$baseDirectory}{$entry}";
         $class = Ntentan::camelize($entry) . 'Controller';
         if (file_exists("{$path}/{$class}.php")) {
             $controller = Controller::load("{$baseRoute}{$entry}", true);
             if (is_a($controller, "\\ntentan\\plugins\\wyf\\lib\\WyfController")) {
                 $permissionItem = array('type' => 'permission', 'label' => Ntentan::toSentence($entry), 'permissions' => array(), 'path' => "{$baseRoute}{$entry}");
                 foreach ($controller->getPermissions() as $permission => $description) {
                     $active = $role->getPermission($permission);
                     $permissionItem['permissions'][] = array('name' => $permission, 'description' => $description, 'active' => $active);
                 }
                 $permissionItems[] = $permissionItem;
             }
             continue;
         }
         $class = Ntentan::camelize($entry);
         if (file_exists("{$path}/{$class}.php")) {
             continue;
         }
         if (is_dir($path)) {
             $permissionItems[] = array('type' => 'link', 'label' => Ntentan::toSentence($entry), 'link' => Ntentan::getUrl("{$this->route}/set_permissions/{$id}/{$entry}"));
         }
     }
     $this->set('permission_items', $permissionItems);
     $this->set('role', (string) $role);
 }