3 * Classification structure administration
14 require_once(dirname(__FILE__
).'/../bootstrap.php');
16 if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__
).'/../../').'/');
17 if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC
.'lib/plugins/');
18 require_once(DOKU_PLUGIN
.'syntax.php');
20 class admin_plugin_class2_main
extends DokuWiki_Admin_Plugin
{
22 private $course = NULL;
25 private $courses = NULL;
26 private $parts = NULL;
27 private $columns = NULL;
29 public function __construct() {
30 //Debug::setDebugTarget(Debug::DEBUG_OFF);
31 Debug
::setDebugTarget(Debug
::DEBUG_DW_MSG
);
35 * overridden translation method
36 * @return translation or code
38 public function getLang($code) {
39 $translation = trim(parent
::getLang($code));
40 if(empty($translation))
45 * Returns basic information about the plug-in required by Dokuwiki
46 * @return array with basic information
50 'author'=> 'vojta jirkovsky',
51 'email' => 'jirkovoj@fit.cvut.cz',
52 'date' => '2010-2011',
53 'name' => 'classification 2 - admin',
54 'desc' => 'classification 2 score admin plugin (classification structure administration)',
55 'url' => 'http://edux.fit.cvut.cz/',
59 public function getMenuText() {
60 //spravne se resi pomoci $lang['menu']
61 return 'Classification structure administration';
64 public function forAdminsOnly() {
68 private function saveColumns() {
69 $this->course
= $_REQUEST['columns']['course'];
70 $this->part
= $_REQUEST['columns']['part'];
71 foreach($_REQUEST['column'] as $id => $cdata) {
72 foreach($cdata as $ckey => $cvalue) {
77 $em = Globals
::getEntityManager();
78 if($cdata['variable']) {
79 if(!($column = Columns
::getColumnById($id))) {
81 $part = Parts
::getPartByCourseAndName($this->course
,$this->part
);
85 $column->idx($cdata['idx'] ?
$cdata['idx'] : 0);
86 $column->variable($cdata['variable']);
87 $column->caption($cdata['caption']);
88 $column->type($cdata['type']);
89 $column->expression($cdata['expression']);
90 $column->defaultValue($cdata['defaultValue']);
91 $column->validRange($cdata['validRange']);
92 $column->validRegex($cdata['validRegex']);
93 $column->validValues($cdata['validValues']);
94 $em->persist($column);
95 } catch(Exception
$e) {
96 Debug
::debug($e->getMessage(),Debug
::DEBUG_ERR
);
103 public function handle() {
105 if(isset($_REQUEST['columns'])) {
106 $this->saveColumns();
109 if(isset($_REQUEST['course'])) {
110 DwHelper
::setSession('admin.course',$_REQUEST['course']);
112 if(isset($_REQUEST['part'])) {
113 DwHelper
::setSession('admin.part',$_REQUEST['part']);
116 $this->course
= DwHelper
::getSession('admin.course');
117 $this->part
= DwHelper
::getSession('admin.part');
121 $this->mode
= 'columns';
122 $this->columns
= Columns
::getColumnsByCourseAndPart($this->course
,$this->part
);
123 } else if($this->course
) {
124 $this->mode
= 'parts';
125 $this->parts
= Parts
::getPartsByCourse($this->course
);
127 $this->mode
= 'courses';
128 $this->courses
= Courses
::getAllCourses();
133 public function html() {
136 echo '<div class="adminHeader">';
137 echo '<a href="?id='.$ID.'&do='.'admin'.'&page='.'class2_main'.'&course=&part=">Courses</a>';
139 echo ' ('.$this->course
.') / <a href="?id='.$ID.'&do='.'admin'.'&page='.'class2_main'.'&part=">Parts</a>';
141 echo ' ('.$this->part
.')';
145 echo 'Edit '.$this->mode
;
147 switch($this->mode
) {
151 $columnTypes = array(
152 'number' => 'number',
153 'boolean' => 'boolean',
154 'string' => 'string',
155 'expression' => 'expression',
159 $table->editable(TRUE);
160 $table->form
->csrf(DwHelper
::getCSRF());
161 $table->form
->addHidden('id',$ID);
162 $table->form
->addHidden('do','admin');
163 $table->form
->addHidden('page','class2_main');
164 $table->form
->addHidden('columns[course]',$this->course
);
165 $table->form
->addHidden('columns[part]',$this->part
);
166 $table->form
->action("?id=$ID&do=admin&page=class2_main");
167 $table->form
->setSubmit('Save');
169 ->add('idx')->add('variable')->add('caption')->add('type')
170 ->add('expression')->add('default value')->add('valid range')
171 ->add('valid regex')->add('valid values');
172 foreach($this->columns
as $column) {
175 ->addInput($column->idx(),"column[$id][idx]")
176 ->addInput($column->variable(),"column[$id][variable]")
177 ->addInput($column->caption(),"column[$id][caption]")
178 ->addSelect(array('selected'=>$column->type(),'data'=>$columnTypes),"column[$id][type]")
179 ->addInput($column->expression(),"column[$id][expression]")
180 ->addInput($column->defaultValue(),"column[$id][defaultValue]")
181 ->addInput($column->validRange(),"column[$id][validRange]")
182 ->addInput($column->validRegex(),"column[$id][validRegex]")
183 ->addInput(implode(',',$column->validValues()),"column[$id][validValues]");
186 ->addInput(NULL,"column[new0][idx]")
187 ->addInput(NULL,"column[new0][variable]",'highlightGreen')
188 ->addInput(NULL,"column[new0][caption]")
189 ->addSelect(array('data'=>$columnTypes),"column[new0][type]")
190 ->addInput(NULL,"column[new0][expression]")
191 ->addInput(NULL,"column[new0][defaultValue]")
192 ->addInput(NULL,"column[new0][validRange]")
193 ->addInput(NULL,"column[new0][validRegex]")
194 ->addInput(NULL,"column[new0][validValues]");
198 echo '<ul class="partsList">';
199 foreach($this->parts
as $part) {
200 echo '<li><a href="?id='.$ID.'&do='.'admin'.'&page='.'class2_main'.'&part='.$part->name().'">'.$part->name().'</a></li>';
206 echo '<ul class="coursesList">';
207 foreach($this->courses
as $course) {
208 echo '<li><a href="?id='.$ID.'&do='.'admin'.'&page='.'class2_main'.'&course='.$course->code().'">'.$course->name().'</a></li>';