[dev] [commit] r1059 - patches phplib/models templates/admin templates/common/bits wwwbase/admin wwwbase/styles
automailer at dexonline.ro
automailer at dexonline.ro
Tue Jan 14 17:54:36 EET 2014
Author: cata
Date: Tue Jan 14 17:54:36 2014
New Revision: 1059
Log:
Replace the "structure sealed" checkmark with a "structure status" integer.
Adjust the workflow accordingly.
Make lexem edit links visibile for structure editors.
Added:
patches/00106.sql
templates/common/bits/structStatus.ihtml
Modified:
phplib/models/Lexem.php
templates/admin/index.ihtml
templates/admin/lexemEdit.ihtml
templates/common/bits/multiParadigm.ihtml
wwwbase/admin/index.php
wwwbase/admin/lexemEdit.php
wwwbase/admin/lexemSearch.php
wwwbase/styles/lexemEdit.css
Added: patches/00106.sql
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ patches/00106.sql Tue Jan 14 17:54:36 2014 (r1059)
@@ -0,0 +1,2 @@
+alter table Lexem change structSealed structStatus int not null default 1;
+update Lexem set structStatus = 1;
Modified: phplib/models/Lexem.php
==============================================================================
--- phplib/models/Lexem.php Mon Jan 13 16:31:00 2014 (r1058)
+++ phplib/models/Lexem.php Tue Jan 14 17:54:36 2014 (r1059)
@@ -3,6 +3,15 @@
class Lexem extends BaseObject implements DatedObject {
public static $_table = 'Lexem';
+ const STRUCT_STATUS_NEW = 1;
+ const STRUCT_STATUS_IN_PROGRESS = 2;
+ const STRUCT_STATUS_UNDER_REVIEW = 3;
+ const STRUCT_STATUS_DONE = 4;
+ public static $STRUCT_STATUS_NAMES = array(self::STRUCT_STATUS_NEW => 'neîncepută',
+ self::STRUCT_STATUS_IN_PROGRESS => 'în lucru',
+ self::STRUCT_STATUS_UNDER_REVIEW => 'așteaptă moderarea',
+ self::STRUCT_STATUS_DONE => 'terminată');
+
public static function create($form = null, $modelType = null, $modelNumber = null, $restriction = '') {
$l = Model::factory('Lexem')->create();
if ($form) {
@@ -432,7 +441,7 @@
$clone->restriction = '';
$clone->isLoc = false;
$clone->verifSp = false;
- $clone->structSealed = false;
+ $clone->structStatus = self::STRUCT_STATUS_NEW;
$clone->save();
// Clone the definition list
Modified: templates/admin/index.ihtml
==============================================================================
--- templates/admin/index.ihtml Mon Jan 13 16:31:00 2014 (r1058)
+++ templates/admin/index.ihtml Tue Jan 14 17:54:36 2014 (r1059)
@@ -62,8 +62,8 @@
Caută lexeme:
<input type="text" name="form" size="10" value="*">
- <input type="checkbox" id="structured" name="structured" value="1">
- <label for="structured">structurate</label>
+ structurare:
+ {include file="common/bits/structStatus.ihtml" canEdit=true anyOption=true}
<input type="submit" name="searchButton" value="Caută">
</form>
<br/>
Modified: templates/admin/lexemEdit.ihtml
==============================================================================
--- templates/admin/lexemEdit.ihtml Mon Jan 13 16:31:00 2014 (r1058)
+++ templates/admin/lexemEdit.ihtml Tue Jan 14 17:54:36 2014 (r1059)
@@ -45,9 +45,20 @@
<td>
<input type="text" id="lexemDescription" name="lexemDescription" value="{$lexem->description|escape}" size="20"
placeholder="opțională, pentru diferențierea omonimelor" {if !$canEdit.description}readonly{/if}/>
+ <span class="tooltip2" title="O scurtă descriere, vizibilă public, pentru diferențierea omonimelor."> </span>
</td>
</tr>
+ <tr>
+ <td><label for="structStatus">structurare:</label></td>
+ <td>
+ {include file="common/bits/structStatus.ihtml" selected=$lexem->structStatus canEdit=$canEdit.structStatus}
+
+ <span class="tooltip2" title="Cât timp structurarea este „în lucru”, persoanele autorizate pot modifica sensurile, variantele, silabisirile
+ și pronunțiile. După trecerea în starea „așteaptă moderarea”, doar moderatorii mai pot schimba aceste valori."> </span>
+ </td>
+ </tr>
+
<tr>
<td><label for="lexemSourceIds">surse:</label></td>
<td>
@@ -126,7 +137,7 @@
title="Variantele nu pot avea sensuri, exemple, variante sau etimologii proprii. Ele pot avea pronunții și silabisiri proprii."> </span>
</td>
</tr>
-
+
{if $homonyms}
<tr>
<td>omonime:</td>
@@ -215,16 +226,9 @@
<input type="button" id="addSubmeaningButton" value="adaugă subsens"/>
<input type="button" id="deleteMeaningButton" value="șterge sens"/>
{else}
- <span class="tooltip2" title="Acest lexem a fost avizat de un moderator. Sensurile, variantele, pronunțiile și silabisirile sale nu mai pot fi modificate"> </span>
+ <span class="tooltip2" title="Sensurile, variantele, pronunțiile și silabisirile pot fi modificate doar cât timp structurarea este „în lucru”."> </span>
{/if}
</div>
- {if $canEdit.seal}
- <input type="checkbox" id="structSealed" name="structSealed" value="1" {if $lexem->structSealed}checked{/if}/>
- <label for="structSealed">avizează acest arbore de sensuri</label>
- <span class="tooltip2" title="După avizare, doar moderatorii mai pot edita sensurile, variantele, silabisirile și pronunțiile."> </span>
- {else}
- <input type="hidden" name="structSealed" value="{$lexem->structSealed}"/>
- {/if}
</div>
{if $canEdit.meanings}
Modified: templates/common/bits/multiParadigm.ihtml
==============================================================================
--- templates/common/bits/multiParadigm.ihtml Mon Jan 13 16:31:00 2014 (r1058)
+++ templates/common/bits/multiParadigm.ihtml Tue Jan 14 17:54:36 2014 (r1059)
@@ -4,10 +4,13 @@
{if $ifMaps}
{foreach from=$ifMaps item=ifMap key=i}
{include file="common/paradigm/$version/paradigm.ihtml" lexem=$lexems[$i] ifMap=$ifMap sourceNames=$sourceNamesArr[$i] modelType=$modelTypes[$i]}
- {if $sUser && ($sUser->moderator & $smarty.const.PRIV_LOC)}
- Editează:
- <a href="{$wwwRoot}admin/lexemEdit.php?lexemId={$lexems[$i]->id}">lexemul</a> |
- <a href="{$wwwRoot}flex/editModel.php?modelType={$lexems[$i]->modelType}&modelNumber={$lexems[$i]->modelNumber}">modelul {$lexems[$i]->modelType}{$lexems[$i]->modelNumber}</a>
+ {if $sUser && ($sUser->moderator & ($smarty.const.PRIV_LOC | $smarty.const.PRIV_STRUCT))}
+ <a href="{$wwwRoot}admin/lexemEdit.php?lexemId={$lexems[$i]->id}">editează lexemul</a>
+ {if $sUser->moderator & $smarty.const.PRIV_LOC}
+ | <a href="{$wwwRoot}flex/editModel.php?modelType={$lexems[$i]->modelType}&modelNumber={$lexems[$i]->modelNumber}">
+ editează modelul {$lexems[$i]->modelType}{$lexems[$i]->modelNumber}
+ </a>
+ {/if}
{/if}
{/foreach}
{if $hasUnrecommendedForms}
Added: templates/common/bits/structStatus.ihtml
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ templates/common/bits/structStatus.ihtml Tue Jan 14 17:54:36 2014 (r1059)
@@ -0,0 +1,19 @@
+{assign var="id" value=$id|default:"structStatus"}
+{assign var="name" value=$name|default:"structStatus"}
+{assign var="structStatusNames" value=$structStatusNames}
+{assign var="selected" value=$selected}
+{assign var="canEdit" value=$canEdit|default:false}
+{assign var="anyOption" value=$anyOption|default:false}
+
+<select id="{$id}" name="{$name}" {if !$canEdit}disabled{/if}>
+ {if $anyOption}
+ <option value="0">oricare</option>
+ {/if}
+ {foreach from=$structStatusNames key=i item=s}
+ <option value="{$i}" {if $i == $selected}selected{/if}>{$s}</option>
+ {/foreach}
+</select>
+
+{if !$canEdit}
+ <input type="hidden" name="{$name}" value="{$selected}">
+{/if}
Modified: wwwbase/admin/index.php
==============================================================================
--- wwwbase/admin/index.php Mon Jan 13 16:31:00 2014 (r1058)
+++ wwwbase/admin/index.php Tue Jan 14 17:54:36 2014 (r1059)
@@ -10,6 +10,7 @@
SmartyWrap::assign("allModeratorSources", Model::factory('Source')->where('canModerate', true)->order_by_asc('displayOrder')->find_many());
SmartyWrap::assign('modelTypes', ModelType::loadCanonical());
SmartyWrap::assign('models', $models);
+SmartyWrap::assign('structStatusNames', Lexem::$STRUCT_STATUS_NAMES);
SmartyWrap::assign('sectionTitle', 'Pagina moderatorului');
SmartyWrap::addCss('jqueryui', 'select2');
SmartyWrap::addJs('jquery', 'jqueryui', 'select2', 'select2Dev');
Modified: wwwbase/admin/lexemEdit.php
==============================================================================
--- wwwbase/admin/lexemEdit.php Mon Jan 13 16:31:00 2014 (r1058)
+++ wwwbase/admin/lexemEdit.php Tue Jan 14 17:54:36 2014 (r1059)
@@ -20,7 +20,7 @@
$pronunciations = util_getRequestParameter('pronunciations');
$variantIds = util_getRequestCsv('variantIds');
$variantOfId = util_getRequestParameter('variantOfId');
-$structSealed = util_getRequestIntParameter('structSealed');
+$structStatus = util_getRequestIntParameter('structStatus');
$jsonMeanings = util_getRequestParameter('jsonMeanings');
$refreshLexem = util_getRequestParameter('refreshLexem');
@@ -51,11 +51,11 @@
$lexem->pronunciations = $pronunciations;
$lexem->variantOfId = $variantOfId ? $variantOfId : null;
$variantOf = Lexem::get_by_id($lexem->variantOfId);
- $lexem->structSealed = $structSealed;
+ $lexem->structStatus = $structStatus;
$meanings = json_decode($jsonMeanings);
$ifs = $lexem->generateParadigm();
- if (validate($lexem, $ifs, $variantOf, $variantIds, $meanings)) {
+ if (validate($lexem, $original, $ifs, $variantOf, $variantIds, $meanings)) {
// Case 1: Validation passed
if ($saveLexem) {
if ($original->modelType == 'VT' && $lexem->modelType != 'VT') {
@@ -102,20 +102,22 @@
SmartyWrap::assign('ifMap', $ifMap);
}
+$ss = $lexem->structStatus;
+$oss = $original->structStatus; // syntactic sugar
$canEdit = array(
'general' => util_isModerator(PRIV_EDIT),
'defStructured' => util_isModerator(PRIV_EDIT),
'description' => !$lexem->isLoc || util_isModerator(PRIV_LOC),
'form' => !$lexem->isLoc || util_isModerator(PRIV_LOC),
- 'hyphenations' => !$lexem->structSealed || util_isModerator(PRIV_EDIT),
+ 'hyphenations' => ($ss == Lexem::STRUCT_STATUS_IN_PROGRESS) || util_isModerator(PRIV_EDIT),
'isLoc' => util_isModerator(PRIV_LOC),
- 'meanings' => !$lexem->structSealed || util_isModerator(PRIV_EDIT),
+ 'meanings' => ($ss == Lexem::STRUCT_STATUS_IN_PROGRESS) || util_isModerator(PRIV_EDIT),
'paradigm' => util_isModerator(PRIV_LOC),
- 'pronunciations' => !$lexem->structSealed || util_isModerator(PRIV_EDIT),
- 'seal' => util_isModerator(PRIV_EDIT),
+ 'pronunciations' => ($ss == Lexem::STRUCT_STATUS_IN_PROGRESS) || util_isModerator(PRIV_EDIT),
'sources' => util_isModerator(PRIV_LOC | PRIV_EDIT),
+ 'structStatus' => ($oss == Lexem::STRUCT_STATUS_NEW) || ($oss == Lexem::STRUCT_STATUS_IN_PROGRESS) || util_isModerator(PRIV_EDIT),
'tags' => util_isModerator(PRIV_LOC | PRIV_EDIT),
- 'variants' => !$lexem->structSealed || util_isModerator(PRIV_EDIT),
+ 'variants' => ($ss == Lexem::STRUCT_STATUS_IN_PROGRESS) || util_isModerator(PRIV_EDIT),
);
SmartyWrap::assign('lexem', $lexem);
@@ -135,6 +137,7 @@
SmartyWrap::assign('models', FlexModel::loadByType($lexem->modelType));
SmartyWrap::assign('canEdit', $canEdit);
SmartyWrap::assign('allStatuses', util_getAllStatuses());
+SmartyWrap::assign('structStatusNames', Lexem::$STRUCT_STATUS_NAMES);
SmartyWrap::addCss('easyui', 'jqueryui', 'paradigm', 'select2', 'lexemEdit', 'windowEngine');
SmartyWrap::addJs('easyui', 'jqueryui', 'select2', 'select2Dev', 'lexemEdit', 'windowEngine', 'cookie');
SmartyWrap::assign('sectionTitle', "Editare lexem: {$lexem->form} {$lexem->modelType}{$lexem->modelNumber}{$lexem->restriction}");
@@ -143,7 +146,7 @@
/**************************************************************************/
-function validate($lexem, $ifs, $variantOf, $variantIds, $meanings) {
+function validate($lexem, $original, $ifs, $variantOf, $variantIds, $meanings) {
if (!$lexem->form) {
FlashMessage::add('Forma nu poate fi vidă.');
}
@@ -218,6 +221,12 @@
}
}
+ if (($lexem->structStatus == Lexem::STRUCT_STATUS_DONE) &&
+ ($original->structStatus != Lexem::STRUCT_STATUS_DONE) &&
+ !util_isModerator(PRIV_EDIT)) {
+ FlashMessage::add("Doar moderatorii pot marca structurarea drept terminată. Vă rugăm să folosiți valoarea „așteaptă moderarea”.");
+ }
+
return FlashMessage::getMessage() == null;
}
Modified: wwwbase/admin/lexemSearch.php
==============================================================================
--- wwwbase/admin/lexemSearch.php Mon Jan 13 16:31:00 2014 (r1058)
+++ wwwbase/admin/lexemSearch.php Tue Jan 14 17:54:36 2014 (r1059)
@@ -4,7 +4,7 @@
util_assertNotMirror();
$form = util_getRequestParameter('form');
-$structured = util_getBoolean('structured');
+$structStatus = util_getRequestParameter('structStatus');
$searchButton = util_getRequestParameter('searchButton');
if (!$searchButton) {
@@ -17,9 +17,9 @@
$field = $hasDiacritics ? 'formNoAccent' : 'formUtf8General';
$regexp = StringUtil::dexRegexpToMysqlRegexp($form);
-$query = "select * from Lexem where $field $regexp ";
-if ($structured) {
- $query .= 'and id in (select distinct lexemId from Meaning)';
+$query = "select * from Lexem where $field $regexp";
+if ($structStatus) {
+ $query .= " and structStatus = {$structStatus}";
}
$query .= ' order by formNoAccent limit 500';
$lexems = Model::factory('Lexem')->raw_query($query, null)->find_many();
Modified: wwwbase/styles/lexemEdit.css
==============================================================================
--- wwwbase/styles/lexemEdit.css Mon Jan 13 16:31:00 2014 (r1058)
+++ wwwbase/styles/lexemEdit.css Tue Jan 14 17:54:36 2014 (r1059)
@@ -151,6 +151,10 @@
font-weight: bold;
}
+#structStatus {
+ width: 172px;
+}
+
input[name=cloneLexem] {
background: #e5e5e5 url("../img/icons/page_white_copy.png") 2px 0px no-repeat;
padding-left: 20px;
More information about the Dev
mailing list