-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocumentation.json
More file actions
executable file
·1 lines (1 loc) · 29.3 KB
/
documentation.json
File metadata and controls
executable file
·1 lines (1 loc) · 29.3 KB
1
{"hierarchy":{"Components":["Components.php","getDivPhoneNumbers.php","getIconField.php","getPhoneNumberField.php","getPhotoField.php","getShadowBox.php"],"Controllers":["Controller.php"],"Models":["Model.php","ProductcategoriesModel.php"],"Views":["Pagetwo.php","View.php"],"forms":["Mexample.php"],"sql":["Variables.php"],"themes":{"example":{"Components":["Components.php","Hello.php"],"Controllers":["Controller.php"],"Models":["Model.php"],"Views":["Pagetwo.php","View.php"],"images":[],"styles":["styles.MD"]},"0":"themes.MD"},"Overview":["README.MD"]},"docs":[{"file_name":"Components\/Components.php","doc_comment":{"summary":"Component usage is defined on this file. You can also include componets from other actions by providing the full namespace to them. Components should be independent for maximum re-usability. Even though you can access model inside the component, you should only use model methods that are provided by Bootstrap. Example of where model is is used directly by the component is with validation error messages.<\\br><\\br>Themes extend this file. Make sure to set the name spaces correctly.<\\br><\\br>Normal documentation practise is to document only the functions inside the components themselves which are traits.<\\br><\\br>NOTE: components are expected to return objects, that can be applied directly on the layout by the view."},"doc_namespace":"packages\\actionMexample\\Components","class":"Components extends BootstrapComponent","methods":[],"uses":{"BootstrapComponent":{"name":"BootstrapComponent","call":"use Bootstrap\\Components\\BootstrapComponent"},"getPhotoField":{"name":"getPhotoField","call":"use getPhotoField"},"getShadowBox":{"name":"getShadowBox","call":"use getShadowBox"},"getIconField":{"name":"getIconField","call":"use getIconField"},"getPhoneNumberField":{"name":"getPhoneNumberField","call":"use getPhoneNumberField"},"getDivPhoneNumbers":{"name":"getDivPhoneNumbers","call":"use getDivPhoneNumbers"}},"public_properties":[],"private_properties":[]},{"file_name":"Components\/getDivPhoneNumbers.php","doc_comment":{"summary":false},"doc_namespace":"packages\\actionMexample\\Components","trait":"getDivPhoneNumbers","methods":{"getDivPhoneNumbers":{"variables":[],"name":"getDivPhoneNumbers","call":"public function getDivPhoneNumbers()","comment":{"summary":"This will return a div content when user has clicked on the country selector in the getPhoneNumberField.<\\br><\\br>This div can be included by the view or it can also be registred by another component, by adding: <code> $this->addDivs(array('countries' => 'getDivPhoneNumbers')); <\/code>","return":"\\stdClass","parameters":[],"links":["packages\\actionMexample\\Components\\getPhoneNumberField"],"object":"","example":""}}},"uses":{"BootstrapComponent":{"name":"BootstrapComponent","call":"use Bootstrap\\Components\\BootstrapComponent"}},"public_properties":[],"private_properties":[]},{"file_name":"Components\/getIconField.php","doc_comment":{"summary":false},"doc_namespace":"packages\\actionMexample\\Components","trait":"getIconField","methods":{"getIconField":{"variables":["$field","$title","$icon"],"name":"getIconField","call":"public function getIconField($field,$title,$icon)","comment":{"summary":"This will automatically set input type for eamil, phone and password accordingly, based on the $field","return":"\\stdClass","parameters":{"$field":{"summary":"Field name or ID. This is accessible from the model when view is submitted."},"$title":{"summary":"param string $title Title for the field. Recommended to be provided as a localization string like this: {#name#}"},"$icon":{"summary":"param string $icon Icon file name. Icon should be put under images directory."}},"links":[],"object":"","example":""}}},"uses":{"BootstrapComponent":{"name":"BootstrapComponent","call":"use Bootstrap\\Components\\BootstrapComponent"}},"public_properties":[],"private_properties":[]},{"file_name":"Components\/getPhoneNumberField.php","doc_comment":{"summary":false},"doc_namespace":"packages\\actionMexample\\Components","trait":"getPhoneNumberField","methods":{"getPhoneNumberField":{"variables":["$country","$field","$title","$icon"],"name":"getPhoneNumberField","call":"public function getPhoneNumberField($country,$field,$title,$icon)","comment":{"summary":"","return":"\\stdClass","parameters":{"$country":{"summary":"param string $country country name"},"$field":{"summary":"field name or id"},"$title":{"summary":"param string $title Title for the field. Recommended to be provided as a localization string like this: {#name#}"},"$icon":{"summary":"param string $icon Icon file name. Icon should be put under images directory."}},"links":[],"object":"","example":""}}},"uses":{"BootstrapComponent":{"name":"BootstrapComponent","call":"use Bootstrap\\Components\\BootstrapComponent"}},"public_properties":[],"private_properties":[]},{"file_name":"Components\/getPhotoField.php","doc_comment":{"summary":false},"doc_namespace":"packages\\actionMexample\\Components","trait":"getPhotoField","methods":{"getPhotoField":{"variables":["$pic","$parameters","$styles"],"name":"getPhotoField","call":"public function getPhotoField($pic,$parameters,$styles)","comment":{"summary":"","return":"\\stdClass","parameters":{"$content":{"summary":"This is an optional field for defining different default picture. If variable profilepic is set,\n it will be used instead."}},"links":[],"object":"","example":""}}},"uses":{"BootstrapComponent":{"name":"BootstrapComponent","call":"use Bootstrap\\Components\\BootstrapComponent"}},"public_properties":[],"private_properties":[]},{"file_name":"Components\/getShadowBox.php","doc_comment":{"summary":false},"doc_namespace":"packages\\actionMexample\\Components","trait":"getShadowBox","methods":{"getShadowBox":{"variables":["$content"],"name":"getShadowBox","call":"public function getShadowBox($content)","comment":{"summary":"This will wrap your content into a shadowbox.","return":"\\stdClass","parameters":{"$content":{"summary":"include object that could otherwise be included in the view."}},"links":[],"object":"","example":""}}},"uses":{"BootstrapComponent":{"name":"BootstrapComponent","call":"use Bootstrap\\Components\\BootstrapComponent"}},"public_properties":[],"private_properties":[]},{"file_name":"Controllers\/Controller.php","doc_comment":{"summary":"This example shows a simple registration form. Usually this action would be used in conjuction with Mobilelogin action, which provides login and logout functionalities.<\\br><\\br>Default controller for your action. If no other route is defined, the action will default to this controller and its default method actionDefault() which must always be defined.<\\br><\\br>In more complex actions, you would include different controller for different modes or phases. Organizing the code for different controllers will help you keep the code more organized and easier to understand and reuse.<\\br><\\br>Unless controller has $this->no_output set to true, it should always return the view file name. Data from the controller to view is passed as a second part of the return array.<\\br><\\br>Theme's controller extends this file, so usually you would define the functions as public so that they can be overriden by the theme controller.<\\br><\\br>"},"doc_namespace":"packages\\actionMexample\\Controllers","class":"Controller extends BootstrapController","methods":{"actionDefault":{"variables":[],"name":"actionDefault","call":"public function actionDefault()","comment":{"summary":"This is the default action inside the controller. This function gets called, if nothing else is defined for the route","return":"array","parameters":[],"links":[],"object":"","example":""}},"actionPagetwo":{"variables":[],"name":"actionPagetwo","call":"public function actionPagetwo()","comment":{"summary":"This function can be invoked by the controllers main method, of if you define an OnClick event routing directly to this. In order to change the actions route to point to this controller function, you would define it like this: <code> $this->getOnclickRoute('Default\/pagetwo\/'); <\/code><\\br><\\br>And in order to invoke the \"done\" portion of the controller, you would define it as: <code> $this->getOnclickRoute('Default\/pagetwo\/done'); <\/code>","return":"array","parameters":[],"links":[],"object":"","example":""}}},"uses":{"BootstrapController":{"name":"BootstrapController","call":"use Bootstrap\\Controllers\\BootstrapController"},"ArticleView":{"name":"ArticleView","call":"use packages\\actionMexample\\Views\\View as ArticleView"},"ArticleModel":{"name":"ArticleModel","call":"use packages\\actionMexample\\Models\\Model as ArticleModel"}},"public_properties":{"$view":{"name":"$view","comment":{"summary":"","return":"","parameters":[],"links":[],"object":"ArticleView","example":""}},"$model":{"name":"$model","comment":{"summary":"Your model and Bootstrap model methods are accessible through this variable","return":"","parameters":[],"links":[],"object":"ArticleModel","example":""}}},"private_properties":[]},{"file_name":"Models\/Model.php","doc_comment":{"link":"http:\/\/docs.appzio.com\/toolkit-section\/models\/","summary":"Default model for the action. It has access to all data provided by the BootstrapModel.<\\br><\\br>"},"doc_namespace":"packages\\actionMexample\\Models","class":"Model extends BootstrapModel","methods":{"getFieldList":{"variables":[],"name":"getFieldList","call":"public function getFieldList()","comment":{"summary":"Gets a list of configuration fields from the web form configuration. These are used by the view.","return":"array","parameters":[],"links":[],"object":"","example":""}},"getCountry":{"variables":[],"name":"getCountry","call":"public function getCountry()","comment":{"summary":"Active selected country for the phone number field","return":"","parameters":[],"links":[],"object":"","example":""}},"savePage1":{"variables":[],"name":"savePage1","call":"public function savePage1()","comment":{"summary":"Save to variables. Called by controller if there are no validation errors.","return":"","parameters":[],"links":[],"object":"","example":""}},"validatePage1":{"variables":[],"name":"validatePage1","call":"public function validatePage1()","comment":{"summary":"Will do a basic validation for all submitted variables and save any errors to validation_errors. Validation errors are read by the field components directly, so that they can display error version of the field along with the validation message. Notice how all validation errors are defined as translation strings making it easy to localize the application.","return":"","parameters":[],"links":[],"object":"","example":""}},"closeLogin":{"variables":["$dologin"],"name":"closeLogin","call":"public function closeLogin($dologin)","comment":{"summary":"This is a special function for registration, which sets required variables to complete registration and closes the login branch. After registration is completed it will close both login and registration actions. You can the use branch triggering by setting your home branch to trigger when logged_in is set to 1. Login branch is defined in the action's configuration.","return":"","parameters":[],"links":[],"object":"","example":""}}},"uses":{"BootstrapModel":{"name":"BootstrapModel","call":"use Bootstrap\\Models\\BootstrapModel"}},"public_properties":{"$validation_errors":{"name":"$validation_errors","comment":{"summary":"This variable doesn't actually need to be declared here, but but here for documentation's sake. Validation erorr is an array where validation errors are saved and can be accessed by controller, view and components.","return":"","parameters":[],"links":[],"object":"","example":""}}},"private_properties":{"$password":{"name":"$password"},"$phone":{"name":"$phone"},"$email":{"name":"$email"},"$firstname":{"name":"$firstname"},"$lastname":{"name":"$lastname"}}},{"file_name":"Models\/ProductcategoriesModel.php","doc_comment":{"summary":"This is an example of a model which uses custom database table. Please refer to YII 1.1.19 documentation on how to work with ActiveRecord. To use this class in your main Model.php, you could do this for example: <code> $categories = ProductcategoriesModel::model()->findAllByAttributes(array('app_id' => $this->app_id)); <\/code><\\br><\\br>When defining custom database columns for your action, make sure to include app_id column, which should always be set with you app_id, which is available in your main model as $this->app_id. If record is user specific, include play_id column, and populate it within the main model using $this->playid. These columns should have relations set to ae_game (for app_id) and ae_play (for play_id) with a cascade on delete. This way when user or app is deleted, also the related records get cleaned up.<\\br><\\br>Example of creating a new record: <code> $new_record = new ProductcategoriesModel(); $new_record->app_id = $this->app_id; $new_record->title = '{#my_category_title#}'; $new_record->insert(); <\/code><\\br><\\br>"},"doc_namespace":"packages\\actionMexample\\Models","class":"ProductcategoriesModel extends CActiveRecord","methods":{"tableName":{"variables":[],"name":"tableName","call":"public function tableName()"},"model":{"variables":["$className"],"name":"model","call":"public static function model($className)"},"relations":{"variables":[],"name":"relations","call":"public function relations()"}},"uses":{"CActiveRecord":{"name":"CActiveRecord","call":"use CActiveRecord"}},"public_properties":{"$id":{"name":"$id"},"$app_id":{"name":"$app_id"},"$title":{"name":"$title"},"$sorting":{"name":"$sorting"}},"private_properties":[]},{"file_name":"Overview\/README.MD","markup":"# Appzio action example for PHP Library 2\n\nThis is a base code for creating a new action for Appzio platform using PHP. \n\n#### Documentation\nFull documentation for the this example action can be found from: http:\/\/docs.appzio.com\/php-toolkit-example\/\n\nDocumentation for the PHP Library 2 can be found from: http:\/\/docs.appzio.com\/php-toolkit\/\n\n#### Installing PHP Library 2\nPlease install https:\/\/github.com\/appzio\/action-bootstrap2 to your project to include all the components.\n\n#### Installing Yii\nYou don't need the Yii installed, but it will make your life little bit easier if you are using a proper IDE. \n\n## Actions\nAppzio applications are built from building blocks that are called actions. Action can provide only a single view or it can have a complete application logic on its own. Actions are organized in Appzio's web dashboard where the actions can be triggered depending on user's flow. Web dashboard provides also content management, menu management, translations any many other features. \n\n### MVC model\nAppzio PHP Library 2 uses MVC model with a majority of the view parts rendered from components. While you can write your entire action without using custom components, its recommended to separate bigger view blocks into their own components. You will not come to regret doing this, as reusing and repurposing different view parts becomes much easier with components.\n\n#### Controllers\nController should be strictly for routing and passing data from model to views.\n\n#### Views\nViews return the actual view code with data provided by controller and with a help of the components.\n\n#### Models\nAll business logic and data accessing belongs to models. This is where you do also data validation and save any validation errors.\n\n### Action's file structure\nAction must include all the directories included in this example action. And all files need to have namespaces for your action and theme set correctly. \n\n### Styles\nWhile all other directories can be found both in the main level and theme, the styles directory belongs only to the action's theme. It's setup like this to avoid confusions with style inheritance and overriding. Note that your application will have styles also from other actions, from components, built-in styles and application's main style definitions. Hence it is recommended to use style naming which is specific to your action to avoid collisions."},{"file_name":"Views\/Pagetwo.php","doc_comment":{"summary":"Its recommended to separate your main views to different files for better code organization, debugging and re-usability. Your view can extend the main view file if you use shared functions in several of your views or it can extend directly Bootstrap\\Views\\BootstrapView.<\\br><\\br>In this view, we use divider and top shadow from the main view. Note, that if you are exending the main view, and your main view includes additional tabs or divs, it can add to unneccessary payload."},"doc_namespace":"packages\\actionMexample\\Views","class":"Pagetwo extends View","methods":{"__construct":{"variables":["$obj"],"name":"__construct","call":"public function __construct($obj)"},"tab1":{"variables":[],"name":"tab1","call":"public function tab1()","comment":{"summary":"View will always need to have a function called tab1. View can include up to five tabs, named simply tab2 etc. Advantage with tabs are, that all tabs are loaded when action is updated, so you can navigate between tabs without doing any refreshes. To navigate to another tab, define OnClick in the following way: <code> $this->getOnclickTab(2); <\/code><\\br><\\br>View should always return a class, with at least one of these defined: $this->layout->header[] $this->layout->scroll[] $this->layout->footer[] $this->layout->onload[] $this->layout->control[]<\\br><\\br>Each of these sections must be an array and the array can only include objects. Be careful with types, returning any other types will throw an error in the client.","return":"\\stdClass","parameters":[],"links":["http:\/\/docs.appzio.com\/php-toolkit\/viewsbootstrapview-php\/"],"object":"","example":""}},"addField_page2":{"variables":["$field"],"name":"addField_page2","call":"public function addField_page2($field)","comment":{"summary":"Model passes the fields that are configured using the webform (simple checkbox whether they are enabled or not) and adds them directly on the $this->layout->scroll[].","return":"","parameters":[],"links":[],"object":"","example":""}}},"uses":[],"public_properties":{"$components":{"name":"$components","comment":{"summary":"Access your components through this variable. Built-in components can be accessed also directly from the view, but your custom components always through this object.","return":"","parameters":[],"links":[],"object":"\\packages\\actionMexample\\Components\\Components","example":""}},"$theme":{"name":"$theme"}},"private_properties":[]},{"file_name":"Views\/View.php","doc_comment":{"summary":"This is a default View file. You see many references here and in components for style classes. Documentation for styles you can see under themes\/example\/styles"},"doc_namespace":"packages\\actionMexample\\Views","class":"View extends BootstrapView","methods":{"__construct":{"variables":["$obj"],"name":"__construct","call":"public function __construct($obj)"},"tab1":{"variables":[],"name":"tab1","call":"public function tab1()","comment":{"summary":"View will always need to have a function called tab1. View can include up to five tabs, named simply tab2 etc. Advantage with tabs are, that all tabs are loaded when action is updated, so you can navigate between tabs without doing any refreshes. To navigate to another tab, define OnClick in the following way: <code> $this->getOnclickTab(2); <\/code><\\br><\\br>View should always return a class, with at least one of these defined:<\\br><\\br>$this->layout->header[]<\\br><\\br>$this->layout->scroll[]<\\br><\\br>$this->layout->footer[]<\\br><\\br>$this->layout->onload[]<\\br><\\br>$this->layout->control[]<\\br><\\br>Each of these sections must be an array and the array can only include objects. Be careful with types, returning any other types will throw an error in the client.<\\br><\\br>Data from controller is accessed using $this->getData('fieldname','array');<\\br><\\br>Data from controller must have type defined. This is to avoid data type errors which can happen rather easily without type casting.","return":"\\stdClass","parameters":[],"links":["http:\/\/docs.appzio.com\/php-toolkit\/viewsbootstrapview-php\/"],"object":"","example":""}},"getDivs":{"variables":[],"name":"getDivs","call":"public function getDivs()","comment":{"summary":"Divs are containers that are loaded when action is refreshed and can be activated and hidden without actually refreshing the view. This makes it possible to build very complex interactions that don't require turnaround to the server, thus providing much more responsive interface for the user.<\\br><\\br>Div's are always named and referred by their names, so the getDivs must return an object with named divs inside of it. To show a div, you you use OnClickShowDiv.<\\br><\\br>In our example the showing of the div is handled by component getPhoneNumberField like this: <code> $this->getOnclickShowDiv('countries',$clickparams) <\/code>","return":"\\stdClass","parameters":[],"links":[],"object":"","example":""}},"addField_page1":{"variables":["$field"],"name":"addField_page1","call":"public function addField_page1($field)","comment":{"summary":"Model passes the fields that are configured using the webform (simple checkbox whether they are enabled or not) and adds them directly on the $this->layout->scroll[].","return":"","parameters":[],"links":[],"object":"","example":""}},"getDivider":{"variables":[],"name":"getDivider","call":"public function getDivider()","comment":{"summary":"Simple small helper for providing a divider element.","return":"\\stdClass","parameters":[],"links":[],"object":"","example":""}},"setTopShadow":{"variables":[],"name":"setTopShadow","call":"public function setTopShadow()","comment":{"summary":"Sets a small shadow on top of the view.","return":"","parameters":[],"links":[],"object":"","example":""}}},"uses":{"BootstrapView":{"name":"BootstrapView","call":"use Bootstrap\\Views\\BootstrapView"}},"public_properties":{"$components":{"name":"$components","comment":{"summary":"Access your components through this variable. Built-in components can be accessed also directly from the view, but your custom components always through this object.","return":"","parameters":[],"links":[],"object":"\\packages\\actionMexample\\Components\\Components","example":""}},"$theme":{"name":"$theme"}},"private_properties":[]},{"file_name":"forms\/Mexample.php","doc_comment":{"summary":"This is the admin interface configuration for the action. All configuration options are easily available under model as $this->getConfigParam('param_name');<\\br><\\br>NOTE: all fields are named config[yourfieldname], nothing else will work. You can invent any field names, these are available when rendering the view (under views\/)<\\br><\\br>IMPORTANT: make sure to define your action's shortname<\\br><\\br> supported field types, uses Yii Booster, this would be your best source of information: http:\/\/www.yiiframework.com\/forum\/index.php\/topic\/36258-yiibooster\/<\\br><\\br>'text' => 'textFieldRow', 'password' => 'passwordFieldRow', 'textarea' => 'textAreaRow', 'file' => 'fileFieldRow', 'radio' => 'radioButtonRow', 'checkbox' => 'checkBoxRow', 'listbox' => 'dropDownListRow', 'dropdownlist' => 'dropDownListRow', 'checkboxlist' => 'checkBoxListRow', 'radiolist' => 'radioButtonListRow',<\\br><\\br>\/\/HTML5 types not supported in YiiBooster yet: render as textField 'url' => 'textFieldRow', 'email' => 'textFieldRow', 'number' => 'textFieldRow',<\\br><\\br>\/\/'range'=>'activeRangeField', not supported yet 'date' => 'datepickerRow',<\\br><\\br>\/\/new YiiBooster types 'captcha' => 'captchaRow', 'daterange' => 'dateRangeRow', 'redactor' => 'redactorRow', 'markdowneditor' => 'markdownEditorRow', 'uneditable' => 'uneditableRow', 'radiolistinline' => 'radioButtonListInlineRow', 'checkboxlistinline' => 'checkBoxListInlineRow', 'select2' => 'select2Row'<\\br><\\br>"},"doc_namespace":false,"methods":[],"uses":[],"public_properties":[],"private_properties":[]},{"file_name":"sql\/Variables.php","doc_comment":{"summary":"You can define variables used by an action here. This is not required in many cases though, as calling a saveVariable will automatically create it. You would defined variables here, if they need to be made available to the client prior to being saved. Use case for that would be for example image fields, which by default are handled by the client in async fashion."},"doc_namespace":false,"methods":[],"uses":[],"public_properties":[],"private_properties":[]},{"file_name":"themes\/example\/Components\/Components.php","doc_comment":{"summary":false},"doc_namespace":"packages\\actionMexample\\themes\\example\\Components","class":"Components extends BootstrapComponents","methods":[],"uses":{"BootstrapComponents":{"name":"BootstrapComponents","call":"use packages\\actionMexample\\Components\\Components as BootstrapComponents"},"Hello":{"name":"Hello","call":"use Hello"}},"public_properties":[],"private_properties":[]},{"file_name":"themes\/example\/Components\/Hello.php","doc_comment":{"summary":false},"doc_namespace":"packages\\actionMexample\\themes\\example\\Components","trait":"Hello","methods":{"getHelloWorld":{"variables":["$content","$parameters","$styles"],"name":"getHelloWorld","call":"public function getHelloWorld($content,$parameters,$styles)","comment":{"summary":"","return":"\\stdClass","parameters":{"$content":{"summary":"string, no support for line feeds"},"$styles":{"summary":"'orientation', 'height', 'width', 'align', 'crop', 'text-style', 'font-size', 'text-color', 'border-color',\n 'border-width', 'font-android', 'font-ios', 'background-color', 'background-image', 'background-size',\n 'color', 'shadow-color', 'shadow-offset', 'shadow-radius', 'vertical-align', 'border-radius', 'text-align',\n 'lazy', 'floating' (1), 'float' (right | left), 'max-height', 'white-space' (no-wrap), parent_style"},"$parameters":{"summary":"param array $parameters selected_state, variable, onclick, style"}},"links":[],"object":"","example":""}}},"uses":{"BootstrapComponent":{"name":"BootstrapComponent","call":"use Bootstrap\\Components\\BootstrapComponent"}},"public_properties":[],"private_properties":[]},{"file_name":"themes\/example\/Controllers\/Controller.php","doc_comment":{"link":"http:\/\/docs.appzio.com\/toolkit-section\/models\/","summary":"Themes model extends actions main model and further the BootstrapModel"},"doc_namespace":"packages\\actionMexample\\themes\\example\\Controllers","class":"Controller extends \\packages\\actionMexample\\Controllers\\Controller","methods":{"__construct":{"variables":["$obj"],"name":"__construct","call":"public function __construct($obj)"}},"uses":{"Main":{"name":"Main","call":"use packages\\actionMexample\\themes\\example\\Views\\Main"},"ArticleView":{"name":"ArticleView","call":"use packages\\actionMexample\\themes\\example\\Views\\View as ArticleView"},"ArticleModel":{"name":"ArticleModel","call":"use packages\\actionMexample\\themes\\example\\Models\\Model as ArticleModel"}},"public_properties":{"$view":{"name":"$view"},"$model":{"name":"$model"},"$title":{"name":"$title"}},"private_properties":[]},{"file_name":"themes\/example\/Models\/Model.php","doc_comment":{"summary":false},"doc_namespace":"packages\\actionMexample\\themes\\example\\Models","class":"Model extends BootstrapModel","methods":[],"uses":{"BootstrapModel":{"name":"BootstrapModel","call":"use packages\\actionMexample\\Models\\Model as BootstrapModel"}},"public_properties":[],"private_properties":[]},{"file_name":"themes\/example\/Views\/Pagetwo.php","doc_comment":{"summary":false},"doc_namespace":"packages\\actionMexample\\themes\\example\\Views","class":"Pagetwo extends BootstrapView","methods":[],"uses":{"BootstrapView":{"name":"BootstrapView","call":"use packages\\actionMexample\\Views\\Pagetwo as BootstrapView"},"Components":{"name":"Components","call":"use packages\\actionMexample\\themes\\example\\Components\\Components"}},"public_properties":{"$layout":{"name":"$layout"},"$title":{"name":"$title"},"$components":{"name":"$components"},"$tab":{"name":"$tab"}},"private_properties":[]},{"file_name":"themes\/example\/Views\/View.php","doc_comment":{"summary":false},"doc_namespace":"packages\\actionMexample\\themes\\example\\Views","class":"View extends BootstrapView","methods":[],"uses":{"BootstrapView":{"name":"BootstrapView","call":"use packages\\actionMexample\\Views\\View as BootstrapView"},"Components":{"name":"Components","call":"use packages\\actionMexample\\themes\\example\\Components\\Components"}},"public_properties":{"$layout":{"name":"$layout"},"$title":{"name":"$title"},"$components":{"name":"$components"},"$tab":{"name":"$tab"}},"private_properties":[]},{"file_name":"themes\/example\/styles\/styles.MD","markup":"# Styles\n\nStyle file must be named according to your actions shortname. Its a json file, which includes css-like styles.\n\nWhile all other directories can be found both in the main level and theme, the styles directory belongs only to the action's theme. It's setup like this to avoid confusions with style inheritance and overriding. Note that your application will have styles also from other actions, from components, built-in styles and application's main style definitions. Hence it is recommended to use style naming which is specific to your action to avoid collisions.\n\nPlease see the documentation for styles here:\nhttp:\/\/docs.appzio.com\/toolkit-section\/styles-components\/"},{"file_name":"themes\/themes.MD","markup":"# Themes\n\nIf your action could be used by different applications, its a good design practise to place any application specific code under the theme.\n\nBe careful when defining new themes to set the namespaces correctly. Theme classes should always extend the main action classes and theme classes can override any of the actions main class methods."}]}