[dev] [commit] r961 - patches phplib/models templates/admin templates/common wwwbase
automailer at dexonline.ro
automailer at dexonline.ro
Wed Aug 28 13:37:27 EEST 2013
Author: cata
Date: Wed Aug 28 13:37:27 2013
New Revision: 961
Log:
Add a rudimentary model type editor.
Added:
patches/00098.sql
templates/common/tipuri-modele.ihtml
wwwbase/tipuri-modele.php
Modified:
phplib/models/ModelType.php
templates/admin/index.ihtml
Added: patches/00098.sql
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ patches/00098.sql Wed Aug 28 13:37:27 2013 (r961)
@@ -0,0 +1,4 @@
+update ModelType set description = lower(description);
+alter table ModelType change code code varchar(10) not null, change canonical canonical varchar(10) not null;
+alter table Lexem change modelType modelType varchar(10) not null;
+alter table Model change modelType modelType varchar(10) not null;
Modified: phplib/models/ModelType.php
==============================================================================
--- phplib/models/ModelType.php Tue Aug 27 16:55:25 2013 (r960)
+++ phplib/models/ModelType.php Wed Aug 28 13:37:27 2013 (r961)
@@ -8,13 +8,8 @@
}
public static function canonicalize($code) {
- if ($code == 'VT') {
- return 'V';
- } else if ($code == 'MF') {
- return 'A';
- } else {
- return $code;
- }
+ $mt = ModelType::get_by_code($code);
+ return $mt->canonical;
}
}
Modified: templates/admin/index.ihtml
==============================================================================
--- templates/admin/index.ihtml Tue Aug 27 16:55:25 2013 (r960)
+++ templates/admin/index.ihtml Wed Aug 28 13:37:27 2013 (r961)
@@ -202,7 +202,8 @@
<a href="{$wwwRoot}private/financials.php">Ciornă financiară</a> (în lucru!)<br/>
<a href="{$wwwRoot}moderatori">Vizualizare / editare moderatori</a><br/>
<a href="{$wwwRoot}surse">Vizualizare / editare surse</a><br/>
- <a href="{$wwwRoot}etichete-sensuri">Vizualizare / editare etichete pentru sensuri</a>
+ <a href="{$wwwRoot}etichete-sensuri">Vizualizare / editare etichete pentru sensuri</a><br/>
+ <a href="{$wwwRoot}tipuri-modele">Vizualizare / editare tipuri de modele</a>
{/if}
<script type="text/javascript">
Added: templates/common/tipuri-modele.ihtml
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ templates/common/tipuri-modele.ihtml Wed Aug 28 13:37:27 2013 (r961)
@@ -0,0 +1,68 @@
+{if $showAddForm}
+ <h3>Adaugă un tip de model nou</h3>
+
+ <form method="post" action="tipuri-modele.php">
+ <input type="hidden" name="id" value="0"/>
+ cod: <input type="text" name="code" value="{$addModelType->code}" size="10" maxlength="10"/><br/>
+
+ cod canonic:
+ <select name="canonical">
+ <option value="">modelul este canonic</option>
+ {foreach from=$canonicalModelTypes item=mt}
+ <option value="{$mt->code}">{$mt->code}</option>
+ {/foreach}
+ </select><br/>
+
+ descriere: <input type="text" name="description" value="{$addModelType->description}" size="40"/><br/>
+ <input type="submit" name="submitAddButton" value="acceptă"/>
+ <a href="tipuri-modele">renunță</a>
+ </form>
+{/if}
+
+{if $editModelType}
+ <h3>Editează tipul de model {$editModelType->code}</h3>
+
+ <form method="post" action="tipuri-modele.php">
+ <input type="hidden" name="id" value="{$editModelType->id}"/>
+ cod: {$editModelType->code}<br/>
+ {if $editModelType->code != $editModelType->canonical}
+ cod canonic: {$editModelType->canonical}<br/>
+ {/if}
+ descriere: <input type="text" name="description" value="{$editModelType->description}" size="40"/><br/>
+ <input type="submit" name="submitEditButton" value="acceptă"/>
+ <a href="tipuri-modele">renunță</a>
+ </form>
+{/if}
+
+<h3>Tipuri de modele</h3>
+
+<table>
+ <tr>
+ <th>cod</th>
+ <th>cod canonic</th>
+ <th>descriere</th>
+ <th>număr de modele</th>
+ <th>număr de lexeme</th>
+ <th>acțiuni</th>
+ </tr>
+
+ {foreach from=$modelTypes item=mt key=i}
+ <tr>
+ <td>{$mt->code}</td>
+ <td>{if $mt->code != $mt->canonical}{$mt->canonical}{/if}</td>
+ <td>{$mt->description}</td>
+ <td>{$modelCounts[$i]}</td>
+ <td>{$lexemCounts[$i]}</td>
+ <td>
+ <a href="?editId={$mt->id}">editează</a>
+ {if $canDelete[$i]}
+ <a href="?deleteId={$mt->id}">șterge</a>
+ {/if}
+ </td>
+ </tr>
+ {/foreach}
+</table>
+
+{if !$showAddForm}
+ <a href="?add=1">adaugă un tip de model</a>
+{/if}
Added: wwwbase/tipuri-modele.php
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ wwwbase/tipuri-modele.php Wed Aug 28 13:37:27 2013 (r961)
@@ -0,0 +1,112 @@
+<?php
+require_once("../phplib/util.php");
+util_assertModerator(PRIV_EDIT);
+
+$showAddForm = util_getRequestParameter('add');
+$editId = util_getRequestParameter('editId');
+$deleteId = util_getRequestParameter('deleteId');
+$submitAddButton = util_getRequestParameter('submitAddButton');
+$submitEditButton = util_getRequestParameter('submitEditButton');
+$id = util_getRequestParameter('id');
+$code = util_getRequestParameter('code');
+$canonical = util_getRequestParameter('canonical');
+$description = util_getRequestParameter('description');
+
+if ($submitAddButton) {
+ $mt = Model::factory('ModelType')->create();
+ $mt->code = mb_strtoupper($code);
+ $mt->canonical = $canonical;
+ $mt->description = $description;
+ if (validateAdd($mt)) {
+ $mt->save();
+ FlashMessage::add("Am adăugat tipul de model '{$mt->code}'.", 'info');
+ util_redirect('tipuri-modele.php');
+ } else {
+ $showAddForm = true;
+ SmartyWrap::assign('addModelType', $mt);
+ }
+}
+
+if ($submitEditButton) {
+ $mt = ModelType::get_by_id($id);
+ $mt->description = $description;
+ if (validateEdit($mt)) {
+ $mt->save();
+ FlashMessage::add('Am salvat descrierea.', 'info');
+ util_redirect('tipuri-modele.php');
+ } else {
+ SmartyWrap::assign('editModelType', $mt);
+ }
+}
+
+if ($editId) {
+ // Load model type to be edited
+ SmartyWrap::assign('editModelType', ModelType::get_by_id($editId));
+}
+
+if ($deleteId) {
+ $mt = ModelType::get_by_id($deleteId);
+ if (validateDelete($mt)) {
+ FlashMessage::add("Am șters tipul de model '{$mt->code}'.", 'info');
+ $mt->delete();
+ util_redirect('tipuri-modele.php');
+ }
+}
+
+// Load model type table data
+$modelTypes = Model::factory('ModelType')->order_by_asc('code')->find_many();
+$modelCounts = array();
+$lexemCounts = array();
+$canDelete = array();
+foreach ($modelTypes as $mt) {
+ $numLexems = Model::factory('Lexem')->where('modelType', $mt->code)->count();
+ $numDependants = Model::factory('ModelType')->where('canonical', $mt->code)->count();
+ $modelCounts[] = Model::factory('FlexModel')->where('modelType', $mt->code)->count();
+ $lexemCounts[] = $numLexems;
+ $canDelete[] = ($numLexems == 0) && ($numDependants <= 1);
+}
+
+SmartyWrap::assign('page_title', 'Tipuri de modele');
+SmartyWrap::assign('canonicalModelTypes', ModelType::loadCanonical());
+SmartyWrap::assign('modelTypes', $modelTypes);
+SmartyWrap::assign('modelCounts', $modelCounts);
+SmartyWrap::assign('lexemCounts', $lexemCounts);
+SmartyWrap::assign('canDelete', $canDelete);
+SmartyWrap::assign('showAddForm', $showAddForm);
+SmartyWrap::displayCommonPageWithSkin('tipuri-modele.ihtml');
+
+/***************************************************************************/
+
+function validateAdd($mt) {
+ if (!$mt->code) {
+ FlashMessage::add('Codul nu poate fi vid.');
+ }
+ if (ModelType::get_by_code($mt->code)) {
+ FlashMessage::add("Codul '{$mt->code}' este deja folosit.");
+ }
+ if (!$mt->description) {
+ FlashMessage::add('Descrierea nu poate fi vidă. Ea trebuie să indice partea de vorbire și este vizibilă la afișarea paradigmelor.');
+ }
+ return FlashMessage::getMessage() == null;
+}
+
+function validateEdit($mt) {
+ if (!$mt->description) {
+ FlashMessage::add('Descrierea nu poate fi vidă. Ea trebuie să indice partea de vorbire și este vizibilă la afișarea paradigmelor.');
+ }
+ return FlashMessage::getMessage() == null;
+}
+
+function validateDelete($mt) {
+ $numLexems = Model::factory('Lexem')->where('modelType', $mt->code)->count();
+ if ($numLexems) {
+ FlashMessage::add("Nu pot șterge tipul '{$mt->code}', deoarece este folosit de {$numLexems} lexeme.");
+ }
+ $numDependants = Model::factory('ModelType')->where('canonical', $mt->code)->count();
+ if ($numDependants > 1) {
+ FlashMessage::add("Nu pot șterge tipul '{$mt->code}', deoarece este canonic pentru alte tipuri.");
+ }
+ return FlashMessage::getMessage() == null;
+}
+
+?>
More information about the Dev
mailing list