22 private $views=[
"CRUD"=>[
"index"=>
"@framework/crud/index.html",
"form"=>
"@framework/crud/form.html",
"display"=>
"@framework/crud/display.html"],
23 "auth"=>[
"index"=>
"@framework/auth/index.html",
"info"=>
"@framework/auth/info.html",
"noAccess"=>
"@framework/auth/noAccess.html",
"disconnected"=>
"@framework/auth/disconnected.html",
"message"=>
"@framework/auth/message.html",
"baseTemplate"=>
"@framework/auth/baseTemplate.html"]
26 abstract protected function _createMethod($access,$name,$parameters=
"",$return=
"",$content=
"",$comment=
"");
28 abstract protected function _createClass($template,$classname,$namespace,$uses,$extendsOrImplements,$classContent);
32 abstract protected function _createController($controllerName,$variables=[],$ctrlTemplate=
'controller.tpl',$hasView=
false,$jsCallback=
"");
38 $resources=\array_combine($resources, $resources);
39 $resourcesList=$this->jquery->semantic()->htmlDropdown(
"resources-list",
"",$resources);
40 $resourcesList->asSelect(
"crud-model");
41 $viewList=$this->jquery->semantic()->htmlDropdown(
"view-list",
"",$this->views[
"CRUD"]);
42 $viewList->asSelect(
"crud-views",
true);
43 $viewList->setDefaultText(
"Select views");
44 $viewList->setProperty(
"style",
"display: none;");
45 $frm=$this->jquery->semantic()->htmlForm(
"crud-controller-frm");
46 $frm->addExtraFieldRule(
"crud-model",
"exactCount[1]");
47 $frm->addExtraFieldRules(
"crud-name", [
"empty",[
"checkController",
"Controller {value} already exists!"]]);
48 $this->jquery->exec(Rule::ajax($this->jquery,
"checkController", $this->
_getAdminFiles()->getAdminBaseRoute() .
"/_controllerExists/crud-name",
"{}",
"result=data.result;",
"postForm", [
"form" =>
"crud-controller-frm" ]),
true);
50 $frm->setValidationParams([
"on"=>
"blur",
"inline"=>
true]);
51 $frm->setSubmitParams($this->
_getAdminFiles()->getAdminBaseRoute().
"/addCrudController",
"#frm");
52 $this->jquery->change(
"#ck-add-route",
"$('#div-new-route').toggle($(this).is(':checked'));");
53 $this->jquery->jsonOn(
"change",
"#ck-add-route", $this->
_getAdminFiles()->getAdminBaseRoute() .
"/_addCtrlRoute/crud",
"post", [
"context" =>
"$('#crud-controller-frm')",
"params" =>
"$('#crud-controller-frm').serialize()",
"jsCondition" =>
"$('#ck-add-route').is(':checked')" ]);
55 $this->jquery->click(
"#validate-btn",
'$("#crud-controller-frm").form("submit");');
56 $this->jquery->execOn(
"click",
"#cancel-btn",
'$("#frm").html("");');
57 $this->jquery->exec(
"$('#crud-datas-ck').checkbox();",
true);
59 $this->jquery->exec(
"$('#crud-viewer-ck').checkbox();",
true);
60 $this->jquery->exec(
"$('#crud-events-ck').checkbox();",
true);
61 $this->jquery->exec(
"$('#ck-add-route').checkbox();",
true);
64 $this->jquery->exec(
'$("#crud-files-ck").checkbox({onChange:function(){ $("#view-list").toggle($("#crud-files-ck").checkbox("is checked"));}});',
true);
73 $controller=
"\\".$_POST[$type.
"-name"];
75 $result[
"route-path"]=$controller;
76 echo json_encode($result);
82 $route=
"";$routeName=
"";
87 $crudControllerName=ucfirst($_POST[
"crud-name"]);
88 $routeName=$crudControllerName;
90 $this->
_createMethod(
"public",
"__construct",
"",
"",
"\n\t\tparent::__construct();\n\$this->model=\"{$resource}\";");
92 if(isset($_POST[
"crud-datas"])){
93 $uses[]=
"use controllers\\crud\\datas\\{$crudControllerName}Datas;";
94 $uses[]=
"use Ubiquity\\controllers\\crud\\CRUDDatas;";
96 $classContent.=$this->
_createMethod(
"protected",
"getAdminData",
"",
": CRUDDatas",
"\t\treturn new {$crudControllerName}Datas(\$this);");
100 if(isset($_POST[
"crud-viewer"])){
101 $uses[]=
"use controllers\\crud\\viewers\\{$crudControllerName}Viewer;";
102 $uses[]=
"use Ubiquity\\controllers\\admin\\viewers\\ModelViewer;";
104 $classContent.=$this->
_createMethod(
"protected",
"getModelViewer",
"",
": ModelViewer",
"\t\treturn new {$crudControllerName}Viewer(\$this);");
107 if(isset($_POST[
"crud-events"])){
108 $uses[]=
"use controllers\\crud\\events\\{$crudControllerName}Events;";
109 $uses[]=
"use Ubiquity\\controllers\\crud\\CRUDEvents;";
111 $classContent.=$this->
_createMethod(
"protected",
"getEvents",
"",
": CRUDEvents",
"\t\treturn new {$crudControllerName}Events(\$this);");
115 if(isset($_POST[
"crud-files"])){
116 $uses[]=
"use controllers\\crud\\files\\{$crudControllerName}Files;";
117 $uses[]=
"use Ubiquity\\controllers\\crud\\CRUDFiles;";
118 $classContent.=$this->
_createMethod(
"protected",
"getFiles",
"",
": CRUDFiles",
"\t\treturn new {$crudControllerName}Files();");
119 $crudFiles=$_POST[
"crud-views"];
120 $crudFiles=explode(
",", $crudFiles);
121 $classFilesContent=[];
122 foreach ($crudFiles as $file){
123 if(isset($this->views[
"CRUD"][$file])){
124 $frameworkViewname=$this->views[
"CRUD"][$file];
125 $this->
createCrudView($frameworkViewname,$crudControllerName, $file);
126 $classFilesContent[]=$this->
_createMethod(
"public",
"getView".ucfirst($file),
"",
"",
"\t\treturn \"".$crudControllerName.
"/".$file.
".html\";");
131 if(isset($_POST[
"ck-add-route"])){
132 $route=$_POST[
"route-path"];
138 $route=
"\n * @route(\"{$route}\",\"inherited\"=>true,\"automated\"=>true)";
141 $uses=implode(
"\n", $uses);
142 $messages[]=$this->
_createController($crudControllerName,[
"%routeName%"=>$routeName,
"%route%"=>$route,
"%resource%"=>$resource,
"%uses%"=>$uses,
"%namespace%"=>$controllerNS,
"%baseClass%"=>
"\\Ubiquity\\controllers\\crud\\CRUDController",
"%content%"=>$classContent],
"crudController.tpl");
143 echo implode(
"", $messages);
144 $this->jquery->get($this->
_getAdminFiles()->getAdminBaseRoute() .
"/_refreshControllers/refresh",
"#dtControllers", [
"jqueryDone" =>
"replaceWith",
"hasLoader" =>
false,
"dataType" =>
"html" ]);
145 echo $this->jquery->compile($this->view);
151 $viewList=$this->jquery->semantic()->htmlDropdown(
"view-list",
"",$this->views[
"auth"]);
152 $viewList->asSelect(
"auth-views",
true);
153 $viewList->setDefaultText(
"Select views");
154 $viewList->setProperty(
"style",
"display: none;");
156 $authControllers=array_combine($authControllers, $authControllers);
157 $ctrlList=$this->jquery->semantic()->htmlDropdown(
"ctrl-list",
"Ubiquity\\controllers\\auth\\AuthController",$authControllers);
158 $ctrlList->asSelect(
"baseClass");
159 $ctrlList->setDefaultText(
"Select base class");
161 $frm=$this->jquery->semantic()->htmlForm(
"auth-controller-frm");
162 $frm->addExtraFieldRules(
"auth-name", [
"empty",[
"checkController",
"Controller {value} already exists!"]]);
163 $this->jquery->exec(Rule::ajax($this->jquery,
"checkController", $this->
_getAdminFiles()->getAdminBaseRoute() .
"/_controllerExists/auth-name",
"{}",
"result=data.result;",
"postForm", [
"form" =>
"auth-controller-frm" ]),
true);
165 $frm->setValidationParams([
"on"=>
"blur",
"inline"=>
true]);
166 $frm->setSubmitParams($this->
_getAdminFiles()->getAdminBaseRoute().
"/addAuthController",
"#frm");
167 $this->jquery->change(
"#ck-add-route",
"$('#div-new-route').toggle($(this).is(':checked'));");
168 $this->jquery->jsonOn(
"change",
"#ck-add-route", $this->
_getAdminFiles()->getAdminBaseRoute() .
"/_addCtrlRoute/auth",
"post", [
"context" =>
"$('#auth-controller-frm')",
"params" =>
"$('#auth-controller-frm').serialize()",
"jsCondition" =>
"$('#ck-add-route').is(':checked')" ]);
170 $this->jquery->click(
"#validate-btn",
'$("#auth-controller-frm").form("submit");');
171 $this->jquery->execOn(
"click",
"#cancel-btn",
'$("#frm").html("");');
172 $this->jquery->exec(
"$('#ck-add-route').checkbox();",
true);
173 $this->jquery->exec(
'$("#auth-files-ck").checkbox({onChange:function(){ $("#view-list").toggle($("#auth-files-ck").checkbox("is checked"));}});',
true);
181 $route=
"";$routeName=
"";
182 $baseClass=
"\\".$_POST[
"baseClass"];
184 if($baseClass==
"\\Ubiquity\\controllers\\auth\\AuthController"){
185 $controllerTemplate=
"authController.tpl";
186 $uses=[
"use Ubiquity\\controllers\\Startup;",
"use Ubiquity\\utils\\http\\USession;",
"use Ubiquity\\utils\\http\\URequest;"];
188 $controllerTemplate=
"authController_.tpl";
194 $authControllerName=ucfirst($_POST[
"auth-name"]);
195 $routeName=$authControllerName;
196 if(isset($_POST[
"auth-files"])){
197 $uses[]=
"use controllers\\auth\\files\\{$authControllerName}Files;";
198 $uses[]=
"use Ubiquity\\controllers\\auth\\AuthFiles;";
199 $classContent.=$this->
_createMethod(
"protected",
"getFiles",
"",
": AuthFiles",
"\t\treturn new {$authControllerName}Files();");
200 $authFiles=$_POST[
"auth-views"];
201 $authFiles=explode(
",", $authFiles);
202 $classFilesContent=[];
203 foreach ($authFiles as $file){
204 if(isset($this->views[
"auth"][$file])){
205 $frameworkViewname=$this->views[
"auth"][$file];
206 $this->
createCrudView($frameworkViewname,$authControllerName, $file);
207 $classFilesContent[]=$this->
_createMethod(
"public",
"getView".ucfirst($file),
"",
"",
"\t\treturn \"".$authControllerName.
"/".$file.
".html\";");
212 if(isset($_POST[
"ck-add-route"])){
213 $route=$_POST[
"route-path"];
219 $route=
"\n * @route(\"{$route}\",\"inherited\"=>true,\"automated\"=>true)";
222 $uses=implode(
"\n", $uses);
223 $messages[]=$this->
_createController($authControllerName,[
"%routeName%"=>$routeName,
"%route%"=>$route,
"%uses%"=>$uses,
"%namespace%"=>$controllerNS,
"%baseClass%"=>$baseClass,
"%content%"=>$classContent],$controllerTemplate);
224 echo implode(
"", $messages);
225 $this->jquery->get($this->
_getAdminFiles()->getAdminBaseRoute() .
"/_refreshControllers/refresh",
"#dtControllers", [
"jqueryDone" =>
"replaceWith",
"hasLoader" =>
false,
"dataType" =>
"html" ]);
226 echo $this->jquery->compile($this->view);
232 $uses=
"\nuse Ubiquity\\controllers\\crud\\CRUDDatas;";
233 return $this->
_createClass(
"class.tpl", $crudControllerName.
"Datas", $ns, $uses,
"extends CRUDDatas",
"\t//use override/implement Methods");
238 $uses=
"\nuse Ubiquity\\controllers\\admin\\viewers\\ModelViewer;";
239 return $this->
_createClass(
"class.tpl", $crudControllerName.
"Viewer", $ns, $uses,
"extends ModelViewer",
"\t//use override/implement Methods");
244 $uses=
"\nuse Ubiquity\\controllers\\crud\\CRUDEvents;";
245 return $this->
_createClass(
"class.tpl", $crudControllerName.
"Events", $ns, $uses,
"extends CRUDEvents",
"\t//use override/implement Methods");
250 $uses=
"\nuse Ubiquity\\controllers\\crud\\CRUDFiles;";
251 return $this->
_createClass(
"class.tpl", $crudControllerName.
"Files", $ns, $uses,
"extends CRUDFiles", $classContent);
256 $uses=
"\nuse Ubiquity\\controllers\\auth\\AuthFiles;";
257 return $this->
_createClass(
"class.tpl", $authControllerName.
"Files", $ns, $uses,
"extends AuthFiles", $classContent);
261 $folder=ROOT . DS .
"views" . DS .$controllerName;
264 $blocks=$this->view->getBlockNames($frameworkName);
265 if(
sizeof($blocks)>0){
266 $content=[
"{% extends \"".$frameworkName.
"\" %}\n"];
267 foreach ($blocks as $blockname){
268 $content[]=
"{% block ".$blockname.
" %}\n\t{{ parent() }}\n{% endblock %}\n";
271 $content=[$this->view->getCode($frameworkName)];
273 }
catch(\Exception $e){
274 $content=[$this->view->getCode($frameworkName)];
static isPost()
Returns true if the request is sent by the POST method.
_createClass($template, $classname, $namespace, $uses, $extendsOrImplements, $classContent)
static asJSON()
Sets the response content-type to application/json.
createAuthFilesClass($authControllerName, $classContent="")
createCrudView($frameworkName, $controllerName, $newName)
static doubleBackSlashes($value)
static getModels(&$config, $silent=false)
createCRUDDatasClass($crudControllerName)
createEventsClass($crudControllerName)
static getNS($part="controllers")
static getControllers($subClass="\biquity\ontrollers\ontroller", $backslash=false, $includeSubclass=false)
createCRUDFilesClass($crudControllerName, $classContent="")
_createMethod($access, $name, $parameters="", $return="", $content="", $comment="")
_createController($controllerName, $variables=[], $ctrlTemplate='controller.tpl', $hasView=false, $jsCallback="")
createModelViewerClass($crudControllerName)
static getClassSimpleName($classnameWithNamespace)
static startswith($hay, $needle)
static save($filename, $content, $flags=LOCK_EX)