Skip to content

Commit

Permalink
New material field "Link to section"
Browse files Browse the repository at this point in the history
  • Loading branch information
nicodim99 committed Jan 11, 2018
1 parent 0c09a05 commit 2d19fc6
Show file tree
Hide file tree
Showing 6 changed files with 153 additions and 137 deletions.
2 changes: 1 addition & 1 deletion cms/.dbschema/core.sql
Expand Up @@ -21,7 +21,7 @@ INSERT INTO `types_fields`
(7, 1, 'autor', 6, 'Author[ru=Автор]', -1, 1, 1, 0, 4, 1003, NULL, 0, NULL, NULL),
(4, 1, 'dat_update', 5, 'Edit date[ru=Дата редактирования]',1, 1, 1, 0, 5, 0, NULL, 0, NULL, NULL),
(3, 1, 'dat', 5, 'Creation date[ru=Дата создания]', 1, 1, 1, 0, 6, 0, NULL, 0, NULL, NULL),
(2, 1, 'idcat', 3, 'Section[ru=Раздел]', 1, 1, 1, 0, 7, 0, NULL, 0, NULL, NULL),
(2, 1, 'idcat', 6, 'Section[ru=Раздел]', 0, 1, 1, 0, 7, 1008, NULL, 0, NULL, NULL),
(5, 1, 'tag', 3, 'Sort[ru=Сортировка]', 1, 1, 0, 1, 1, 0, 100, 0, NULL, NULL),
(6, 1, 'type', 3, '', 1, 1, 1, 0, 8, 0, NULL, 0, NULL, NULL),
(9, 1, 'meta_title', 1, 'Meta title', 1000, 0, 0, 1, 13, 0, '', 1, '', 'SEO'),
Expand Down
14 changes: 8 additions & 6 deletions cms/include/classes/Cetera/DynamicFieldsObject.php
Expand Up @@ -444,12 +444,14 @@ private function getMaterialField($field)
$this->fields[$field['name']] = $this->getPlainField($field);

if ($this->fields[$field['name']]) {

if ($field['pseudo_type'] == PSEUDO_FIELD_LINK_USER) {

$this->fields[$field['name']] = User::getById($this->fields[$field['name']]);

} else {

if ($field['pseudo_type'] == PSEUDO_FIELD_LINK_CATALOG) {
$this->fields[$field['name']] = Catalog::getById($this->fields[$field['name']]);
}
elseif ($field['pseudo_type'] == PSEUDO_FIELD_LINK_USER) {
$this->fields[$field['name']] = User::getById($this->fields[$field['name']]);
}
else {

if ($field['type'] == FIELD_LINK) {
if ($field['len']) {
Expand Down
6 changes: 3 additions & 3 deletions cms/include/classes/Cetera/ObjectDefinition.php
Expand Up @@ -201,9 +201,9 @@ public static function create()
$conn->executeQuery("insert into types_fields (id,name,type,describ,len,fixed,required,shw,tag) values ($id,'alias', 1,'Alias', 255, 1, 1, 1, 3)");
$conn->executeQuery("insert into types_fields (id,name,type,describ,len,fixed,required,shw,tag) values ($id,'dat', 5,'Date create[ru=Дата создания]', 1, 1, 1, 0, 5)");
$conn->executeQuery("insert into types_fields (id,name,type,describ,len,fixed,required,shw,tag) values ($id,'dat_update', 5,'Edit date[ru=Дата изменения]', 1, 1, 1, 0, 6)");
$conn->executeQuery("insert into types_fields (id,name,type,describ,len,fixed,required,shw,tag,pseudo_type) values ($id,'autor', 6,'Author[ru=Автор]', -2, 1, 1, 0, 4,1003)");
$conn->executeQuery("insert into types_fields (id,name,type,describ,len,fixed,required,shw,tag) values ($id,'type', 3,'Properties[ru=Свойства]', 1, 1, 1, 0, 7)");
$conn->executeQuery("insert into types_fields (id,name,type,describ,len,fixed,required,shw,tag) values ($id,'idcat', 3,'Section[ru=Раздел]', 1, 1, 1, 0, 8)");
$conn->executeQuery("insert into types_fields (id,name,type,describ,len,fixed,required,shw,tag,pseudo_type) values ($id,'autor', 6,'Author[ru=Автор]', -2, 1, 1, 0, 4,1003)");
$conn->executeQuery("insert into types_fields (id,name,type,describ,len,fixed,required,shw,tag) values ($id,'type', 3,'Properties[ru=Свойства]', 1, 1, 1, 0, 7)");
$conn->executeQuery("insert into types_fields (id,name,type,describ,len,fixed,required,shw,tag,pseudo_type) values ($id,'idcat', 6,'Section[ru=Раздел]', 0, 1, 1, 0, 8, 1008)");

return new self($id, $params['alias']);

Expand Down
139 changes: 79 additions & 60 deletions cms/include/classes/Cetera/ObjectField.php
Expand Up @@ -33,8 +33,12 @@ public static function factory($data, $od) {
return new ObjectFieldMaterial($data, $od);
case FIELD_MATSET:
return new ObjectFieldMaterialSet($data, $od);
case FIELD_TEXT:
case FIELD_LONGTEXT:
case FIELD_HUGETEXT:
return new ObjectFieldText($data, $od);
default:
return new ObjectField($data, $od);
return new ObjectFieldScalar($data, $od);
}

}
Expand Down Expand Up @@ -80,6 +84,21 @@ public static function fixOffset($offset) {
}
}

/**
* Скалярное поле
* @internal
*/
class ObjectFieldScalar extends ObjectField {
}

/**
* Текстовое поле
* @internal
*/
class ObjectFieldText extends ObjectFieldScalar {
}


/**
* Поля-ссылки на другие объекты
* @internal
Expand Down Expand Up @@ -122,6 +141,65 @@ public function getLinkTable()

}

/**
* @internal
*/
class ObjectFieldLink extends ObjectFieldLinkAbstract {

use ObjectFieldLinkTrait;
}

/**
* @internal
*/
class ObjectFieldMaterial extends ObjectFieldLinkAbstract {

use ObjectFieldMaterialTrait;

}

/**
* @internal
*/
class ObjectFieldLinkUser extends ObjectFieldLinkAbstract {

use ObjectFieldUserTrait;
}

/**
* @internal
*/
class ObjectFieldLinkSet extends ObjectFieldLinkSetAbstract {

use ObjectFieldLinkTrait;

}

/**
* @internal
*/
class ObjectFieldMaterialSet extends ObjectFieldLinkSetAbstract {

use ObjectFieldMaterialTrait;

}

/**
* @internal
*/
class ObjectFieldLinkSetCatalog extends ObjectFieldLinkSetAbstract {

use ObjectFieldCatalogTrait;
}

/**
* @internal
*/
class ObjectFieldLinkSetUser extends ObjectFieldLinkSetAbstract {

use ObjectFieldUserTrait;
}

/**
* Поля, содержащие другие материалы
* @internal
Expand Down Expand Up @@ -195,63 +273,4 @@ public function getIterator()
{
return $this->getCatalog()->getMaterials();
}
}

/**
* @internal
*/
class ObjectFieldLink extends ObjectFieldLinkAbstract {

use ObjectFieldLinkTrait;
}

/**
* @internal
*/
class ObjectFieldMaterial extends ObjectFieldLinkAbstract {

use ObjectFieldMaterialTrait;

}

/**
* @internal
*/
class ObjectFieldLinkUser extends ObjectFieldLinkAbstract {

use ObjectFieldUserTrait;
}

/**
* @internal
*/
class ObjectFieldLinkSet extends ObjectFieldLinkSetAbstract {

use ObjectFieldLinkTrait;

}

/**
* @internal
*/
class ObjectFieldMaterialSet extends ObjectFieldLinkSetAbstract {

use ObjectFieldMaterialTrait;

}

/**
* @internal
*/
class ObjectFieldLinkSetCatalog extends ObjectFieldLinkSetAbstract {

use ObjectFieldCatalogTrait;
}

/**
* @internal
*/
class ObjectFieldLinkSetUser extends ObjectFieldLinkSetAbstract {

use ObjectFieldUserTrait;
}
2 changes: 1 addition & 1 deletion cms/include/constants.php
Expand Up @@ -11,7 +11,7 @@
**/

/** Версия */
define('VERSION', '3.40.2');
define('VERSION', '3.41.0');

/** Название продукта */
define('APP_NAME', 'Cetera CMS');
Expand Down

0 comments on commit 2d19fc6

Please sign in to comment.