diff options
| author | Tristan Zur <tzur@ccwn.org> | 2012-05-18 14:41:59 +0200 |
|---|---|---|
| committer | Tristan Zur <tzur@ccwn.org> | 2012-05-18 14:41:59 +0200 |
| commit | e657fe8d8c848ad5f24ff46ee4f2438e116468fd (patch) | |
| tree | 7cc314b0607cdf56e21b91e1fadd30d3550a8d07 /protected | |
| parent | fdca87325b4f7708a1868419f391fc6a84da1661 (diff) | |
- Speis & Trank (Vereine): Verbesserung der Bedienbarkeit
- Speis & Trank (Vereine): Neu-Anlage von Angebot-Stammdaten über Dialog
Diffstat (limited to 'protected')
| -rw-r--r-- | protected/controllers/MyAngebotController.php | 106 | ||||
| -rw-r--r-- | protected/models/AngebotVerein.php | 4 | ||||
| -rw-r--r-- | protected/runtime/application.log | 127 | ||||
| -rw-r--r-- | protected/views/myAngebot/_angebot_form.php | 52 | ||||
| -rw-r--r-- | protected/views/myAngebot/_form.php | 142 | ||||
| -rw-r--r-- | protected/views/myAngebot/index.php | 2 |
6 files changed, 369 insertions, 64 deletions
diff --git a/protected/controllers/MyAngebotController.php b/protected/controllers/MyAngebotController.php index 02d9929..0072e61 100644 --- a/protected/controllers/MyAngebotController.php +++ b/protected/controllers/MyAngebotController.php @@ -11,8 +11,7 @@ class MyAngebotController extends Controller /** * @return array action filters */ - public function filters() - { + public function filters() { return array( 'accessControl', // perform access control for CRUD operations ); @@ -23,11 +22,10 @@ class MyAngebotController extends Controller * This method is used by the 'accessControl' filter. * @return array access control rules */ - public function accessRules() - { + public function accessRules() { return array( array('allow', // // allow authenticated user - 'actions'=>array('create', 'index', 'delete', 'update', 'view'), + 'actions'=>array('create', 'createAngebot', 'index', 'delete', 'update', 'view'), 'users'=>array('@'), ), array('deny', // deny all users @@ -40,39 +38,33 @@ class MyAngebotController extends Controller * Creates a new model. * If creation is successful, the browser will be redirected to the 'view' page. */ - public function actionCreate() - { - $model=new AngebotVerein; + public function actionCreate() { + $model = new AngebotVerein(); + $model->published = true; // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); - if(isset($_POST['AngebotVerein'])) - { + if (isset($_POST['AngebotVerein'])) { $model->attributes = $_POST['AngebotVerein']; $model->verein_id = Yii::app()->user->vereinId; - if($model->save()) + if($model->save()) { $this->redirect(array('index')); + } else { + if (0 < $model->angebot_id) { + $model->angebot = Angebot::model()->findByPk($model->angebot_id); + } } - - $angebot = Angebot::model()->findAll();
- $angebote = array();
- foreach ($angebot as $a) {
- $an = array();
- $an["label"] = $a->name;
- $an["value"] = $a->id;
- $an["einheiten"] = $a->kategorie->einheiten;
- array_push($angebote, $an);
} $this->render('create',array( 'model'=>$model, - 'angebote'=>$angebote, - 'einheiten'=>'' + 'angebote'=>$this->loadAllAngeboteForAutoComplete(), + 'einheiten'=>(null != $model->angebot) ? $model->angebot->kategorie->einheiten : '' )); } - public function actionIndex() - { + + public function actionIndex() { $model = new AngebotVerein('search'); $model->unsetAttributes(); // clear any default values if (isset($_GET['AngebotVerein'])) { @@ -91,41 +83,77 @@ class MyAngebotController extends Controller // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); - if(isset($_POST['AngebotVerein'])) - { + if (isset($_POST['AngebotVerein'])){ $model->attributes = $_POST['AngebotVerein']; - if($model->save()) + if ($model->verein_id != Yii::app()->user->vereinId) { + $model->verein_id = Yii::app()->user->vereinId; + } + if ($model->save()) { $this->redirect(array('index')); } - $angebot = Angebot::model()->findAll(); - $angebote = array(); - foreach ($angebot as $a) { - $an = array(); - $an["label"] = $a->name; - $an["value"] = $a->id; - $an["einheiten"] = $a->kategorie->einheiten; - array_push($angebote, $an); } + $this->render('update',array( 'model'=>$model, - 'angebote'=>$angebote, + 'angebote'=>$this->loadAllAngeboteForAutoComplete(), 'einheiten'=>$model->angebot->kategorie->einheiten )); } + public function actionCreateAngebot() { + $model = new Angebot(); + $model->published = true;
+
+ if (Yii::app()->request->isAjaxRequest) { + if(isset($_POST['Angebot'])) {
+ $model->attributes = $_POST['Angebot']; + if ($model->save()) { + echo CJSON::encode(array(
+ 'status'=>'success',
+ 'div'=>"Angebot erfolgreich erstellt", + 'label'=>$model->name, + 'value'=>$model->id, + 'einheiten'=>$model->kategorie->einheiten
+ )); + exit; + } + } + + $kategorien = Kategorie::model()->findAll(array("condition"=>"published=1"));
+ echo CJSON::encode(array(
+ 'status'=>'failure',
+ 'div'=>$this->renderPartial('_angebot_form', array('model'=>$model, 'kategorien'=>$kategorien), true)));
+ } else { + throw new CHttpException(400); + } + } + /** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * @param integer the ID of the model to be loaded */ - public function loadModel($id) - { + protected function loadModel($id) { $model = AngebotVerein::model()->findByPk($id); - if($model===null) + if ($model === null) { throw new CHttpException(404, 'The requested page does not exist.'); + } return $model; } + private function loadAllAngeboteForAutoComplete() { + $angebot = Angebot::model()->findAll();
+ $angebote = array();
+ foreach ($angebot as $a) {
+ $an = array();
+ $an["label"] = $a->name;
+ $an["value"] = $a->id;
+ $an["einheiten"] = $a->kategorie->einheiten;
+ array_push($angebote, $an);
+ } + return $angebote; + } + // Uncomment the following methods and override them if needed /* public function filters() diff --git a/protected/models/AngebotVerein.php b/protected/models/AngebotVerein.php index 5bb2d77..183baef 100644 --- a/protected/models/AngebotVerein.php +++ b/protected/models/AngebotVerein.php @@ -91,8 +91,8 @@ class AngebotVerein extends CActiveRecord 'verein_id' => 'Verein', 'menge' => 'Menge', 'einheit' => 'Einheit', - 'preis' => 'Preis', - 'published' => 'Published', + 'preis' => 'Preis (in €)', + 'published' => 'Öffentlich', ); } diff --git a/protected/runtime/application.log b/protected/runtime/application.log index cd1f33f..7e750aa 100644 --- a/protected/runtime/application.log +++ b/protected/runtime/application.log @@ -6485,3 +6485,130 @@ Stack trace: REQUEST_URI=/admin.astaf.de/index.php?r=myAngebot/view&id=9 HTTP_REFERER=http://dev.astaf.de:90/admin.astaf.de/index.php?r=myAngebot/update&id=9 --- +2012/05/18 14:24:28 [error] [exception.CHttpException.404] exception 'CHttpException' with message 'Konnte den Request "classroom/create" nicht auflösen.' in D:\Projects\Astaf\workspace\yii\framework\web\CWebApplication.php:280 +Stack trace: +#0 D:\Projects\Astaf\workspace\yii\framework\web\CWebApplication.php(135): CWebApplication->runController('classroom/creat...') +#1 D:\Projects\Astaf\workspace\yii\framework\base\CApplication.php(162): CWebApplication->processRequest() +#2 D:\Projects\Astaf\workspace\admin.astaf.de\index.php(13): CApplication->run() +#3 {main} +REQUEST_URI=/admin.astaf.de/index.php?r=classroom/create +HTTP_REFERER=http://dev.astaf.de:90/admin.astaf.de/index.php?r=myAngebot/create +--- +2012/05/18 14:26:03 [error] [exception.CHttpException.403] exception 'CHttpException' with message 'Sie sind nicht berechtigt, diese Aktion auszuführen.' in D:\Projects\Astaf\workspace\yii\framework\web\auth\CAccessControlFilter.php:157 +Stack trace: +#0 D:\Projects\Astaf\workspace\yii\framework\web\auth\CAccessControlFilter.php(120): CAccessControlFilter->accessDenied(Object(CWebUser), 'Sie sind nicht ...') +#1 D:\Projects\Astaf\workspace\yii\framework\web\filters\CFilter.php(39): CAccessControlFilter->preFilter(Object(CFilterChain)) +#2 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(1146): CFilter->filter(Object(CFilterChain)) +#3 D:\Projects\Astaf\workspace\yii\framework\web\filters\CInlineFilter.php(59): CController->filterAccessControl(Object(CFilterChain)) +#4 D:\Projects\Astaf\workspace\yii\framework\web\filters\CFilterChain.php(131): CInlineFilter->filter(Object(CFilterChain)) +#5 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(292): CFilterChain->run() +#6 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(266): CController->runActionWithFilters(Object(CInlineAction), Array) +#7 D:\Projects\Astaf\workspace\yii\framework\web\CWebApplication.php(276): CController->run('createAngebot') +#8 D:\Projects\Astaf\workspace\yii\framework\web\CWebApplication.php(135): CWebApplication->runController('myAngebot/creat...') +#9 D:\Projects\Astaf\workspace\yii\framework\base\CApplication.php(162): CWebApplication->processRequest() +#10 D:\Projects\Astaf\workspace\admin.astaf.de\index.php(13): CApplication->run() +#11 {main} +REQUEST_URI=/admin.astaf.de/index.php?r=myAngebot/createAngebot +HTTP_REFERER=http://dev.astaf.de:90/admin.astaf.de/index.php?r=myAngebot/create +--- +2012/05/18 14:26:09 [error] [exception.CHttpException.403] exception 'CHttpException' with message 'Sie sind nicht berechtigt, diese Aktion auszuführen.' in D:\Projects\Astaf\workspace\yii\framework\web\auth\CAccessControlFilter.php:157 +Stack trace: +#0 D:\Projects\Astaf\workspace\yii\framework\web\auth\CAccessControlFilter.php(120): CAccessControlFilter->accessDenied(Object(CWebUser), 'Sie sind nicht ...') +#1 D:\Projects\Astaf\workspace\yii\framework\web\filters\CFilter.php(39): CAccessControlFilter->preFilter(Object(CFilterChain)) +#2 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(1146): CFilter->filter(Object(CFilterChain)) +#3 D:\Projects\Astaf\workspace\yii\framework\web\filters\CInlineFilter.php(59): CController->filterAccessControl(Object(CFilterChain)) +#4 D:\Projects\Astaf\workspace\yii\framework\web\filters\CFilterChain.php(131): CInlineFilter->filter(Object(CFilterChain)) +#5 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(292): CFilterChain->run() +#6 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(266): CController->runActionWithFilters(Object(CInlineAction), Array) +#7 D:\Projects\Astaf\workspace\yii\framework\web\CWebApplication.php(276): CController->run('createAngebot') +#8 D:\Projects\Astaf\workspace\yii\framework\web\CWebApplication.php(135): CWebApplication->runController('myAngebot/creat...') +#9 D:\Projects\Astaf\workspace\yii\framework\base\CApplication.php(162): CWebApplication->processRequest() +#10 D:\Projects\Astaf\workspace\admin.astaf.de\index.php(13): CApplication->run() +#11 {main} +REQUEST_URI=/admin.astaf.de/index.php?r=myAngebot/createAngebot +HTTP_REFERER=http://dev.astaf.de:90/admin.astaf.de/index.php?r=myAngebot/create +--- +2012/05/18 14:26:33 [error] [php] Undefined variable: angebote (D:\Projects\Astaf\workspace\admin.astaf.de\protected\views\myAngebot\_form.php:16) +Stack trace: +#0 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(870): MyAngebotController->renderFile() +#1 D:\Projects\Astaf\workspace\admin.astaf.de\protected\controllers\MyAngebotController.php(120): MyAngebotController->renderPartial() +#2 D:\Projects\Astaf\workspace\yii\framework\web\actions\CInlineAction.php(50): MyAngebotController->actionCreateAngebot() +#3 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(309): CInlineAction->runWithParams() +#4 D:\Projects\Astaf\workspace\yii\framework\web\filters\CFilterChain.php(134): MyAngebotController->runAction() +#5 D:\Projects\Astaf\workspace\yii\framework\web\filters\CFilter.php(41): CFilterChain->run() +#6 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(1146): CAccessControlFilter->filter() +#7 D:\Projects\Astaf\workspace\yii\framework\web\filters\CInlineFilter.php(59): MyAngebotController->filterAccessControl() +#8 D:\Projects\Astaf\workspace\yii\framework\web\filters\CFilterChain.php(131): CInlineFilter->filter() +#9 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(292): CFilterChain->run() +#10 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(266): MyAngebotController->runActionWithFilters() +#11 D:\Projects\Astaf\workspace\yii\framework\web\CWebApplication.php(276): MyAngebotController->run() +#12 D:\Projects\Astaf\workspace\yii\framework\web\CWebApplication.php(135): CWebApplication->runController() +#13 D:\Projects\Astaf\workspace\yii\framework\base\CApplication.php(162): CWebApplication->processRequest() +#14 D:\Projects\Astaf\workspace\admin.astaf.de\index.php(13): CWebApplication->run() +REQUEST_URI=/admin.astaf.de/index.php?r=myAngebot/createAngebot +in D:\Projects\Astaf\workspace\admin.astaf.de\protected\views\myAngebot\_form.php (16) +in D:\Projects\Astaf\workspace\admin.astaf.de\protected\controllers\MyAngebotController.php (120) +in D:\Projects\Astaf\workspace\admin.astaf.de\index.php (13) +2012/05/18 14:28:14 [error] [php] Undefined variable: angebote (D:\Projects\Astaf\workspace\admin.astaf.de\protected\views\myAngebot\_form.php:16) +Stack trace: +#0 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(870): MyAngebotController->renderFile() +#1 D:\Projects\Astaf\workspace\admin.astaf.de\protected\controllers\MyAngebotController.php(120): MyAngebotController->renderPartial() +#2 D:\Projects\Astaf\workspace\yii\framework\web\actions\CInlineAction.php(50): MyAngebotController->actionCreateAngebot() +#3 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(309): CInlineAction->runWithParams() +#4 D:\Projects\Astaf\workspace\yii\framework\web\filters\CFilterChain.php(134): MyAngebotController->runAction() +#5 D:\Projects\Astaf\workspace\yii\framework\web\filters\CFilter.php(41): CFilterChain->run() +#6 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(1146): CAccessControlFilter->filter() +#7 D:\Projects\Astaf\workspace\yii\framework\web\filters\CInlineFilter.php(59): MyAngebotController->filterAccessControl() +#8 D:\Projects\Astaf\workspace\yii\framework\web\filters\CFilterChain.php(131): CInlineFilter->filter() +#9 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(292): CFilterChain->run() +#10 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(266): MyAngebotController->runActionWithFilters() +#11 D:\Projects\Astaf\workspace\yii\framework\web\CWebApplication.php(276): MyAngebotController->run() +#12 D:\Projects\Astaf\workspace\yii\framework\web\CWebApplication.php(135): CWebApplication->runController() +#13 D:\Projects\Astaf\workspace\yii\framework\base\CApplication.php(162): CWebApplication->processRequest() +#14 D:\Projects\Astaf\workspace\admin.astaf.de\index.php(13): CWebApplication->run() +REQUEST_URI=/admin.astaf.de/index.php?r=myAngebot/createAngebot +in D:\Projects\Astaf\workspace\admin.astaf.de\protected\views\myAngebot\_form.php (16) +in D:\Projects\Astaf\workspace\admin.astaf.de\protected\controllers\MyAngebotController.php (120) +in D:\Projects\Astaf\workspace\admin.astaf.de\index.php (13) +2012/05/18 14:28:25 [error] [php] Undefined variable: kategorien (D:\Projects\Astaf\workspace\admin.astaf.de\protected\views\myAngebot\_angebot_form.php:14) +Stack trace: +#0 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(870): MyAngebotController->renderFile() +#1 D:\Projects\Astaf\workspace\admin.astaf.de\protected\controllers\MyAngebotController.php(120): MyAngebotController->renderPartial() +#2 D:\Projects\Astaf\workspace\yii\framework\web\actions\CInlineAction.php(50): MyAngebotController->actionCreateAngebot() +#3 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(309): CInlineAction->runWithParams() +#4 D:\Projects\Astaf\workspace\yii\framework\web\filters\CFilterChain.php(134): MyAngebotController->runAction() +#5 D:\Projects\Astaf\workspace\yii\framework\web\filters\CFilter.php(41): CFilterChain->run() +#6 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(1146): CAccessControlFilter->filter() +#7 D:\Projects\Astaf\workspace\yii\framework\web\filters\CInlineFilter.php(59): MyAngebotController->filterAccessControl() +#8 D:\Projects\Astaf\workspace\yii\framework\web\filters\CFilterChain.php(131): CInlineFilter->filter() +#9 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(292): CFilterChain->run() +#10 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(266): MyAngebotController->runActionWithFilters() +#11 D:\Projects\Astaf\workspace\yii\framework\web\CWebApplication.php(276): MyAngebotController->run() +#12 D:\Projects\Astaf\workspace\yii\framework\web\CWebApplication.php(135): CWebApplication->runController() +#13 D:\Projects\Astaf\workspace\yii\framework\base\CApplication.php(162): CWebApplication->processRequest() +#14 D:\Projects\Astaf\workspace\admin.astaf.de\index.php(13): CWebApplication->run() +REQUEST_URI=/admin.astaf.de/index.php?r=myAngebot/createAngebot +in D:\Projects\Astaf\workspace\admin.astaf.de\protected\views\myAngebot\_angebot_form.php (14) +in D:\Projects\Astaf\workspace\admin.astaf.de\protected\controllers\MyAngebotController.php (120) +in D:\Projects\Astaf\workspace\admin.astaf.de\index.php (13) +2012/05/18 14:28:28 [error] [php] Undefined variable: kategorien (D:\Projects\Astaf\workspace\admin.astaf.de\protected\views\myAngebot\_angebot_form.php:14) +Stack trace: +#0 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(870): MyAngebotController->renderFile() +#1 D:\Projects\Astaf\workspace\admin.astaf.de\protected\controllers\MyAngebotController.php(120): MyAngebotController->renderPartial() +#2 D:\Projects\Astaf\workspace\yii\framework\web\actions\CInlineAction.php(50): MyAngebotController->actionCreateAngebot() +#3 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(309): CInlineAction->runWithParams() +#4 D:\Projects\Astaf\workspace\yii\framework\web\filters\CFilterChain.php(134): MyAngebotController->runAction() +#5 D:\Projects\Astaf\workspace\yii\framework\web\filters\CFilter.php(41): CFilterChain->run() +#6 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(1146): CAccessControlFilter->filter() +#7 D:\Projects\Astaf\workspace\yii\framework\web\filters\CInlineFilter.php(59): MyAngebotController->filterAccessControl() +#8 D:\Projects\Astaf\workspace\yii\framework\web\filters\CFilterChain.php(131): CInlineFilter->filter() +#9 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(292): CFilterChain->run() +#10 D:\Projects\Astaf\workspace\yii\framework\web\CController.php(266): MyAngebotController->runActionWithFilters() +#11 D:\Projects\Astaf\workspace\yii\framework\web\CWebApplication.php(276): MyAngebotController->run() +#12 D:\Projects\Astaf\workspace\yii\framework\web\CWebApplication.php(135): CWebApplication->runController() +#13 D:\Projects\Astaf\workspace\yii\framework\base\CApplication.php(162): CWebApplication->processRequest() +#14 D:\Projects\Astaf\workspace\admin.astaf.de\index.php(13): CWebApplication->run() +REQUEST_URI=/admin.astaf.de/index.php?r=myAngebot/createAngebot +in D:\Projects\Astaf\workspace\admin.astaf.de\protected\views\myAngebot\_angebot_form.php (14) +in D:\Projects\Astaf\workspace\admin.astaf.de\protected\controllers\MyAngebotController.php (120) +in D:\Projects\Astaf\workspace\admin.astaf.de\index.php (13) diff --git a/protected/views/myAngebot/_angebot_form.php b/protected/views/myAngebot/_angebot_form.php new file mode 100644 index 0000000..ca1ba6f --- /dev/null +++ b/protected/views/myAngebot/_angebot_form.php @@ -0,0 +1,52 @@ +<div class="form"> + +<?php $form=$this->beginWidget('CActiveForm', array( + 'id'=>'angebot-form', + 'enableAjaxValidation'=>false, +)); ?> + + <?php $this->renderPartial('/common/_required_fields_text'); ?> + + <?php echo $form->errorSummary($model); ?> + + <div class="row"> + <?php echo $form->labelEx($model,'kategorie_id'); ?> + <?php echo $form->dropDownList($model, "kategorie_id", CHtml::listData($kategorien, "id", "name"), array('empty' => '-- Bitte Kategorie wählen --')); ?> + <?php echo $form->error($model,'kategorie_id'); ?> + </div> + + <div class="row"> + <?php echo $form->labelEx($model,'name'); ?> + <?php echo $form->textField($model,'name',array('size'=>60,'maxlength'=>80)); ?> + <?php echo $form->error($model,'name'); ?> + </div> + + <div class="row"> + <?php echo $form->labelEx($model,'beschreibung'); ?> + <?php $this->widget('application.extensions.tinymce.ETinyMce', + array( + 'name'=>'beschreibung', + "value"=>$model->beschreibung, + 'useSwitch' => false, + 'editorTemplate'=>'simple', + "language"=>"de", + "height"=>"200px", + ) + ); + ?> + <?php echo $form->error($model,'beschreibung'); ?> + </div> + + <div class="row"> + <?php echo $form->labelEx($model,'published'); ?> + <?php echo $form->checkbox($model,'published'); ?> + <?php echo $form->error($model,'published'); ?> + </div> + + <div class="row buttons"> + <?php echo CHtml::submitButton($model->isNewRecord ? 'Erstellen' : 'Speichern'); ?> + </div> + +<?php $this->endWidget(); ?> + +</div><!-- form -->
\ No newline at end of file diff --git a/protected/views/myAngebot/_form.php b/protected/views/myAngebot/_form.php index 409862b..2abd64d 100644 --- a/protected/views/myAngebot/_form.php +++ b/protected/views/myAngebot/_form.php @@ -19,35 +19,52 @@ 'options'=>array( 'minLength'=>'2', 'select'=>'js:function(event, ui) { - $("#AngebotVerein_angebot_id").val(ui.item.value); - $("#angebot_name").val(ui.item.label); + return selectAngebot(ui.item); + }', + 'change'=>'js:function( event ) { + var autocomplete = $( this ).data( "autocomplete" ); + if (autocomplete.selectedItem ) { return; } + var fullMatcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( $(this).val() ) + "$", "i" ); + var partMatcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( $(this).val() ), "i" ); + autocomplete.widget().children( ".ui-menu-item" ).each(function() { + var item = $(this).data("item.autocomplete"); + if (fullMatcher.test( item.label)) { + autocomplete.selectedItem = item; + return false; + } else if (partMatcher.test(item.label)) { + var conf = confirm("Meinten Sie \""+item.label+"\"?"); + if (conf) { + autocomplete.selectedItem = item; + return false; + } + } + }); + if (autocomplete.selectedItem) { + autocomplete._trigger("select", event, { item: autocomplete.selectedItem } ); + } else { var selectObj = $("#AngebotVerein_einheit")[0]; + selectObj.style.display = "none"; + $("#emptyEinheitenTxt")[0].style.display = "inline"; + $("#createNewMasterAngebot")[0].style.display = "inline"; var selectParentNode = selectObj.parentNode; var newSelectObj = selectObj.cloneNode(false); // Make a shallow copy selectParentNode.replaceChild(newSelectObj, selectObj); - var count = 0; - var einheiten = ui.item.einheiten.split(","); - for (i in einheiten) { - var str = einheiten[i].replace(/^\s+/, ""); - for (var i = str.length - 1; i >= 0; i--) { - if (/\S/.test(str.charAt(i))) { - str = str.substring(0, i + 1); - break; - } - } - newSelectObj.options[count++] = new Option(str, str); + + $("#AngebotVerein_angebot_id").val(""); } - return false; - }' + }', ), 'htmlOptions'=>array( - 'style'=>'height:20px;' + 'style'=>'height:20px;', + 'size'=>'60' ), )); ?> <?php echo $form->hiddenField($model, 'angebot_id'); ?> <?php echo $form->error($model, 'angebot_id'); ?> </div> + <span id="createNewMasterAngebot" style="display:none">CREATE</span> + <div class="row"> <?php echo $form->labelEx($model,'menge'); ?> <?php echo $form->textField($model,'menge',array('size'=>60,'maxlength'=>80)); ?> @@ -55,15 +72,22 @@ </div> <div class="row"> - <?php echo $form->labelEx($model,'preis'); ?> - <?php echo $form->textField($model,'preis',array('size'=>60,'maxlength'=>80)); ?> - <?php echo $form->error($model,'preis'); ?> + <?php echo $form->labelEx($model,'einheit'); ?> + <?php + if ($einheiten !== null && '' != $einheiten) { + echo Html::einheitenDropDownList($model, 'einheit', $einheiten); + } else { + ?><select id="AngebotVerein_einheit" style="display:none;"></select><?php + } + ?> + <span id="emptyEinheitenTxt" style="display: <?php echo ($einheiten !== null && '' != $einheiten) ? "none" : "inline"?>">Bitte zuerst das Angebot eingeben.</span> + <?php echo $form->error($model,'einheit'); ?> </div> <div class="row"> - <?php echo $form->labelEx($model,'einheit'); ?> - <?php echo Html::einheitenDropDownList($model, 'einheit', $einheiten)?> - <?php echo $form->error($model,'einheit'); ?> + <?php echo $form->labelEx($model,'preis'); ?> + <?php echo $form->textField($model,'preis',array('size'=>60,'maxlength'=>80)); ?> + <?php echo $form->error($model,'preis'); ?> </div> <div class="row"> @@ -78,3 +102,77 @@ <?php $this->endWidget(); ?> </div> + +<?php +/* + * The create angebot form + */ +?> + +<?php echo CHtml::link('Neues Angebot erstellen', "", // the link for open the dialog + array( + 'style'=>'cursor: pointer; text-decoration: underline;', + 'onclick'=>"{addAngebot(); $('#angebotDialog').dialog('open');}"));?> + +<?php +$this->beginWidget('zii.widgets.jui.CJuiDialog', array( // the dialog + 'id'=>'angebotDialog', + 'options'=>array( + 'title'=>'Neues Angebot erstellen', + 'autoOpen'=>false, + 'modal'=>true, + 'width'=>550, + 'height'=>470, + ), +));?> +<div class="divForForm"></div> + +<?php $this->endWidget();?> + +<script type="text/javascript"> +function addAngebot() { + <?php echo CHtml::ajax(array( + 'url'=>array('myAngebot/createAngebot'), + 'data'=> "js:$(this).serialize()", + 'type'=>'post', + 'dataType'=>'json', + 'success'=>"function(data) { + if (data.status == 'failure') { + $('#angebotDialog div.divForForm').html(data.div); + // Here is the trick: on submit-> once again this function! + $('#angebotDialog div.divForForm form').submit(addAngebot); + } else { + $('#angebotDialog div.divForForm').html(data.div); + setTimeout(\"$('#angebotDialog').dialog('close') \",3000); + selectAngebot(data); + } + }", + ))?>; + return false; +} + +function selectAngebot(angebot) { + $("#AngebotVerein_angebot_id").val(angebot.value); + $("#angebot_name").val(angebot.label); + var selectObj = $("#AngebotVerein_einheit")[0]; + selectObj.style.display = "inline"; + $("#emptyEinheitenTxt")[0].style.display = "none"; + $("#createNewMasterAngebot")[0].style.display = "none"; + var selectParentNode = selectObj.parentNode; + var newSelectObj = selectObj.cloneNode(false); // Make a shallow copy + selectParentNode.replaceChild(newSelectObj, selectObj); + var count = 0; + var einheiten = angebot.einheiten.split(","); + for (i in einheiten) { + var str = einheiten[i].replace(/^\s+/, ""); + for (var i = str.length - 1; i >= 0; i--) { + if (/\S/.test(str.charAt(i))) { + str = str.substring(0, i + 1); + break; + } + } + newSelectObj.options[count++] = new Option(str, str); + } + return false; +} +</script>
\ No newline at end of file diff --git a/protected/views/myAngebot/index.php b/protected/views/myAngebot/index.php index 1210040..50daeb7 100644 --- a/protected/views/myAngebot/index.php +++ b/protected/views/myAngebot/index.php @@ -22,7 +22,7 @@ $this->menu=array( 'filter'=>$model, 'columns'=>array( array('header'=>'Angebot', 'value'=>'$data->angebot->name', 'name'=>'angebot_id', 'filter'=>CHtml::listData(Angebot::model()->findAll(), 'id', 'name')), - array('header'=>'Verein', 'value'=>'$data->verein->name'), + //array('header'=>'Verein', 'value'=>'$data->verein->name'), array('header'=>'Menge', 'value'=>'Format::number($data->menge, $data->einheit)'), array('header'=>'Preis', 'value'=>'Format::currency($data->preis)'), array('header'=>'Öffentlich', |
