Add a relation between IDF_Project and IDF_Tag (again), this time
its a many-to-many. We store project tags in IDF_Tag with a project id "0" (this has minimal to no impact on existing code) and therefor only need to ensure that the new relation table exists in the migration. Then just the project summary configuration and the admin's project create and project update forms and views needed to be adapted to be able to render, create and update project tags.
This commit is contained in:
@@ -42,16 +42,16 @@ class IDF_Tag extends Pluf_Model
|
||||
array(
|
||||
'type' => 'Pluf_DB_Field_Sequence',
|
||||
//It is automatically added.
|
||||
'blank' => true,
|
||||
'blank' => true,
|
||||
),
|
||||
'project' =>
|
||||
'project' =>
|
||||
array(
|
||||
'type' => 'Pluf_DB_Field_Foreignkey',
|
||||
'model' => 'IDF_Project',
|
||||
'blank' => false,
|
||||
'verbose' => __('project'),
|
||||
),
|
||||
'class' =>
|
||||
'class' =>
|
||||
array(
|
||||
'type' => 'Pluf_DB_Field_Varchar',
|
||||
'blank' => false,
|
||||
@@ -59,13 +59,13 @@ class IDF_Tag extends Pluf_Model
|
||||
'verbose' => __('tag class'),
|
||||
'help_text' => __('The class of the tag.'),
|
||||
),
|
||||
'name' =>
|
||||
'name' =>
|
||||
array(
|
||||
'type' => 'Pluf_DB_Field_Varchar',
|
||||
'blank' => false,
|
||||
'verbose' => __('name'),
|
||||
),
|
||||
'lcname' =>
|
||||
'lcname' =>
|
||||
array(
|
||||
'type' => 'Pluf_DB_Field_Varchar',
|
||||
'blank' => false,
|
||||
@@ -95,7 +95,7 @@ class IDF_Tag extends Pluf_Model
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a tag if not already existing.
|
||||
* Add a project-specific tag if not already existing.
|
||||
*
|
||||
* @param string Name of the tag.
|
||||
* @param IDF_Project Project of the tag.
|
||||
@@ -107,7 +107,7 @@ class IDF_Tag extends Pluf_Model
|
||||
$class = trim($class);
|
||||
$name = trim($name);
|
||||
$gtag = new IDF_Tag();
|
||||
$sql = new Pluf_SQL('class=%s AND lcname=%s AND project=%s',
|
||||
$sql = new Pluf_SQL('class=%s AND lcname=%s AND project=%s',
|
||||
array($class, mb_strtolower($name), $project->id));
|
||||
$tags = $gtag->getList(array('filter' => $sql->gen()));
|
||||
if ($tags->count() < 1) {
|
||||
@@ -122,6 +122,32 @@ class IDF_Tag extends Pluf_Model
|
||||
return $tags[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a global tag if not already existing
|
||||
*
|
||||
* @param string Name of the tag.
|
||||
* @param string Class of the tag (IDF_TAG_DEFAULT_CLASS)
|
||||
* @return IDF_Tag The tag.
|
||||
*/
|
||||
public static function addGlobal($name, $class=IDF_TAG_DEFAULT_CLASS)
|
||||
{
|
||||
$class = trim($class);
|
||||
$name = trim($name);
|
||||
$gtag = new IDF_Tag();
|
||||
$sql = new Pluf_SQL('class=%s AND lcname=%s AND project=0',
|
||||
array($class, mb_strtolower($name)));
|
||||
$tags = $gtag->getList(array('filter' => $sql->gen()));
|
||||
if ($tags->count() < 1) {
|
||||
// create a new tag
|
||||
$tag = new IDF_Tag();
|
||||
$tag->name = $name;
|
||||
$tag->class = $class;
|
||||
$tag->create();
|
||||
return $tag;
|
||||
}
|
||||
return $tags[0];
|
||||
}
|
||||
|
||||
function __toString()
|
||||
{
|
||||
if ($this->class != IDF_TAG_DEFAULT_CLASS) {
|
||||
|
Reference in New Issue
Block a user