* @link https://TableTopElite.com */ namespace TheTempusProject\Controllers\Admin; use TheTempusProject\Houdini\Classes\Issues; use TheTempusProject\Houdini\Classes\Views; use TheTempusProject\Houdini\Classes\Components; use TheTempusProject\Bedrock\Functions\Input; use TheTempusProject\Bedrock\Functions\Check; use TheTempusProject\Classes\Forms; use TheTempusProject\Classes\AdminController; use TheTempusProject\Models\Languages as LanguagesModel; use TheTempusProject\Houdini\Classes\Navigation; use TheTempusProject\Houdini\Classes\Forms as HoudiniForms; use TheTempusProject\Models\Sourcebooks as SourcebooksModel; class Languages extends AdminController { protected static $languages; protected static $sourcebooks; public function __construct() { parent::__construct(); self::$title = 'Admin - D&D Languages'; self::$languages = new LanguagesModel; self::$sourcebooks = new SourcebooksModel; $view = Navigation::activePageSelect( 'nav.admin', '/admin/languages' ); Components::set( 'ADMINNAV', $view ); } public function index( $data = null ) { Views::view( 'dnd.admin.languages.list', self::$languages->paginatedList() ); } public function view( $id = null ) { $data = self::$languages->findById( $id ); if ( $data == false ) { Issues::add( 'error', 'Language not found.' ); return $this->index(); } Views::view( 'dnd.admin.languages.view', $data ); } public function create( $data = null ) { Components::set( 'languageTypeDropdown', Views::simpleView('dnd.forms.languageTypeDropdown') ); Components::set( 'privacyDropdown', Views::simpleView('dnd.forms.privacyDropdown') ); Components::set( 'versionDropdown', Views::simpleView('dnd.forms.versionDropdown') ); $sourcebookSelect = HoudiniForms::getFormFieldHtml( 'sourcebookID', 'SourceBook', 'select', 'none', self::$sourcebooks->simpleList() ); Components::set( 'sourcebookSelect', $sourcebookSelect ); if ( !Input::exists( 'submit' ) ) { return Views::view( 'dnd.admin.languages.create' ); } if ( !Forms::check( 'createLanguage' ) ) { Issues::add( 'error', [ 'There was an error with your request.' => Check::userErrors() ] ); return Views::view( 'dnd.admin.languages.create' ); } // create( $name, $privacy, $version, $sourcebookID, $type, $typical_speakers, $script, $sound, $description, $shortDescription' ) if ( self::$languages->create( Input::post( 'name' ), Input::post( 'privacy' ), Input::post( 'version' ), Input::post( 'sourcebookID' ), Input::post( 'type' ), Input::post( 'typical_speakers' ), Input::post( 'script' ), Input::post( 'sound' ), Input::post( 'description' ), Input::post( 'shortDescription' ) ) ) { Issues::add( 'success', 'Language created' ); return $this->index(); } else { Issues::add( 'error', 'There was an error creating your language.' ); return Views::view( 'dnd.admin.languages.create' ); } } public function edit( $id = null ) { $data = self::$languages->findById( $id ); if ( false == $data ) { return $this->index(); } Components::set( 'languageTypeDropdown', Views::simpleView('dnd.forms.languageTypeDropdown', $data) ); Components::set( 'privacyDropdown', Views::simpleView('dnd.forms.privacyDropdown', $data) ); Components::set( 'versionDropdown', Views::simpleView('dnd.forms.versionDropdown', $data) ); $sourcebookSelect = HoudiniForms::getFormFieldHtml( 'sourcebookID', 'SourceBook', 'select', $data->sourcebookID, self::$sourcebooks->simpleList() ); Components::set( 'sourcebookSelect', $sourcebookSelect ); if ( !Input::exists( 'submit' ) ) { return Views::view( 'dnd.admin.languages.edit', $data ); } if ( !Forms::check( 'editLanguage' ) ) { Issues::add( 'error', [ 'There was an error with your request.' => Check::userErrors() ] ); return Views::view( 'dnd.admin.languages.edit', $data ); } // update( $id, $name, $privacy, $version, $sourcebookID, $type, $typical_speakers, $script, $sound, $description, $shortDescription' ) if ( self::$languages->update( $id, Input::post( 'name' ), Input::post( 'privacy' ), Input::post( 'version' ), Input::post( 'sourcebookID' ), Input::post( 'type' ), Input::post( 'typical_speakers' ), Input::post( 'script' ), Input::post( 'sound' ), Input::post( 'description' ), Input::post( 'shortDescription' ) ) ) { Issues::add( 'success', 'Language updated' ); } else { return Views::view( 'dnd.admin.languages.edit', $data ); } } public function delete( $data = null ) { if ( !self::$languages->delete( $data ) ) { Issues::add( 'error', 'There was an error with your request.' ); } else { Issues::add( 'success', 'Language has been deleted' ); } $this->index(); } }