$string['deletedcoursetags'] = 'Deleted - Course tags';
$string['description'] = 'Description';
$string['editisstandard'] = 'Change standard tag usage';
+$string['editcollname'] = 'Edit tag collection name';
$string['editname'] = 'Edit tag name';
+$string['editsearchable'] = 'Change searchable';
$string['edittag'] = 'Edit this tag';
$string['edittagcollection'] = 'Change tag collection';
$string['entertags'] = 'Enter tags...';
$string['moretags'] = 'more...';
$string['name'] = 'Tag name';
$string['namesalreadybeeingused'] = 'Tag names already being used';
+$string['newcollnamefor'] = 'New name for tag collection {$a}';
$string['newnamefor'] = 'New name for tag {$a}';
$string['nextpage'] = 'More';
$string['notagsfound'] = 'No tags matching "{$a}" found';
*/
initManageCollectionsPage: function() {
$('body').on('updated', '[data-inplaceeditable]', function(e) {
- var ajaxreturn = e.ajaxreturn;
- var oldvalue = e.oldvalue;
+ var ajaxreturn = e.ajaxreturn,
+ oldvalue = e.oldvalue,
+ areaid, collid, isenabled;
if (ajaxreturn.component === 'core_tag' && ajaxreturn.itemtype === 'tagareaenable') {
- var areaid = $(this).attr('data-itemid');
+ areaid = $(this).attr('data-itemid');
$(".tag-collections-table ul[data-collectionid] li[data-areaid="+areaid+"]").addClass('hidden');
- var isenabled = ajaxreturn.value;
+ isenabled = ajaxreturn.value;
if (isenabled === '1') {
$(this).closest('tr').removeClass('dimmed_text');
- var collid = $(this).closest('tr').find('[data-itemtype="tagareacollection"]').attr("data-value");
+ collid = $(this).closest('tr').find('[data-itemtype="tagareacollection"]').attr("data-value");
$(".tag-collections-table ul[data-collectionid="+collid+"] li[data-areaid="+areaid+"]").removeClass('hidden');
} else {
$(this).closest('tr').addClass('dimmed_text');
}
}
if (ajaxreturn.component === 'core_tag' && ajaxreturn.itemtype === 'tagareacollection') {
- var areaid = $(this).attr('data-itemid');
+ areaid = $(this).attr('data-itemid');
$(".tag-collections-table ul[data-collectionid] li[data-areaid="+areaid+"]").addClass('hidden');
- var collid = $(this).attr('data-value');
- var isenabled = $(this).closest('tr').find('[data-itemtype="tagareaenable"]').attr("data-value");
+ collid = $(this).attr('data-value');
+ isenabled = $(this).closest('tr').find('[data-itemtype="tagareaenable"]').attr("data-value");
if (isenabled === "1") {
$(".tag-collections-table ul[data-collectionid="+collid+"] li[data-areaid="+areaid+"]").removeClass('hidden');
}
}
- });
+ });
+
+ $('body').on('click', '.addtagcoll > a', function(e) {
+ e.preventDefault();
+ var href = $(this).attr('data-url') + '&sesskey=' + M.cfg.sesskey;
+ str.get_strings([
+ {key : 'addtagcoll', component : 'tag'},
+ {key : 'name'},
+ {key : 'searchable', component : 'tag'},
+ {key : 'create'},
+ {key : 'cancel'},
+ ]).done(function(s) {
+ var el = $('<div><form id="addtagcoll_form" class="form-inline">'+
+ '<p><label for="addtagcoll_name"></label>: ' +
+ '<input id="addtagcoll_name" type="text"/><br/>' +
+ '<label for="addtagcoll_searchable"></label>: ' +
+ '<input id="addtagcoll_searchable" type="checkbox" value="1" checked/></p>' +
+ '<p class="mdl-align"><input type="submit" id="addtagcoll_submit"/>'+
+ '<input type="button" id="addtagcoll_cancel"/></p>' +
+ '</form></div>');
+ el.find('label[for="addtagcoll_name"]').html(s[1]);
+ el.find('label[for="addtagcoll_searchable"]').html(s[2]);
+ el.find('#addtagcoll_submit').attr('value', s[3]);
+ el.find('#addtagcoll_cancel').attr('value', s[4]);
+ var panel = new M.core.dialogue ({
+ draggable: true,
+ modal: true,
+ closeButton: true,
+ headerContent: s[0],
+ bodyContent: el.html()
+ });
+ panel.show();
+ $('#addtagcoll_form #addtagcoll_name').focus();
+ $('#addtagcoll_form #addtagcoll_cancel').on('click', function() {
+ panel.destroy();
+ });
+ $('#addtagcoll_form').on('submit', function() {
+ var name = $('#addtagcoll_form #addtagcoll_name').val();
+ var searchable = $('#addtagcoll_form #addtagcoll_searchable').prop('checked') ? 1 : 0;
+ if (String(name).length > 0) {
+ window.location.href = href + "&name=" + encodeURIComponent(name) + "&searchable=" + searchable;
+ }
+ return false;
+ });
+ }
+ );
+
+ });
+
+ $('body').on('click', '.tag-collections-table .action_delete', function(e) {
+ e.preventDefault();
+ var href = $(this).attr('data-url') + '&sesskey=' + M.cfg.sesskey;
+ str.get_strings([
+ {key : 'delete'},
+ {key : 'suredeletecoll', component : 'tag', param : $(this).attr('data-collname') },
+ {key : 'yes'},
+ {key : 'no'},
+ ]).done(function(s) {
+ notification.confirm(s[0], s[1], s[2], s[3], function() {
+ window.location.href = href;
+ });
+ }
+ );
+ });
}
};
});
\ No newline at end of file
'linkeverything' => $this->get_linkeverything() ? 1 : 0,
);
}
+
+ /**
+ * Renders this element
+ *
+ * @param renderer_base $output typically, the renderer that's calling this function
+ * @return string
+ */
+ public function render(\renderer_base $output) {
+ return $output->render_from_template('core/inplace_editable', $this->export_for_template($output));
+ }
}
return get_string($identifier, $component);
}
if (!empty($record->name)) {
- return format_string($record->name, true, $syscontext);
+ return format_string($record->name, true, array('context' => $syscontext));
} else if ($record->isdefault) {
return get_string('defautltagcoll', 'tag');
} else {
* Updates the tag collection information
*
* @param stdClass $tagcoll existing record in DB table tag_coll
- * @param stdClass $data data from form core_tag_collection_form
+ * @param stdClass $data data to update
* @return bool wether the record was updated
*/
public static function update($tagcoll, $data) {
+++ /dev/null
-<?php
-// This file is part of Moodle - http://moodle.org/
-//
-// Moodle is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Moodle is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
-
-/**
- * Contains class core_tag_collection_form
- *
- * @package core
- * @copyright 2015 Marina Glancy
- * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- */
-
-defined('MOODLE_INTERNAL') || die();
-
-require_once($CFG->libdir . '/formslib.php');
-
-/**
- * Form for editing tag collection
- *
- * @package core
- * @copyright 2015 Marina Glancy
- * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- */
-class core_tag_collection_form extends moodleform {
-
- /**
- * Form definition
- */
- public function definition() {
- $data = fullclone($this->_customdata);
- if (isset($data->id)) {
- $data->tc = $data->id;
- $data->action = 'colledit';
- } else {
- $data = new stdClass();
- $data->action = 'colladd';
- $data->isdefault = false;
- }
-
- $mform = $this->_form;
- $mform->addElement('hidden', 'tc');
- $mform->setType('tc', PARAM_INT);
- $mform->addElement('hidden', 'action');
- $mform->setType('action', PARAM_ALPHA);
-
- $mform->addElement('text', 'name', get_string('name'));
- $mform->setType('name', PARAM_NOTAGS);
- $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
- if (empty($data->isdefault)) {
- $mform->addRule('name', get_string('required'), 'required', null, 'client');
- } else {
- $mform->addElement('static', 'collnameexplained', '', get_string('collnameexplained', 'tag',
- get_string('defautltagcoll', 'tag')));
- }
-
- $mform->addElement('advcheckbox', 'searchable', get_string('searchable', 'tag'));
- $mform->addHelpButton('searchable', 'searchable', 'tag');
- $mform->setDefault('searchable', 1);
- if (!empty($data->isdefault)) {
- $mform->freeze('searchable');
- }
-
- $this->add_action_buttons();
-
- $this->set_data($data);
- }
-}
/**
* Constructor
+ * @global \core_renderer $OUTPUT
* @param string|moodle_url $pageurl
*/
public function __construct($pageurl) {
// Move up.
if ($idx > 1) {
$url->param('action', 'collmoveup');
- $actions .= $OUTPUT->action_icon($url, new pix_icon('t/up', get_string('moveup')));
+ $actions .= $OUTPUT->action_icon($url, new pix_icon('t/up', get_string('moveup')), null,
+ array('class' => 'action-icon action_moveup'));
}
// Move down.
if ($idx < count($tagcolls) - 1) {
$url->param('action', 'collmovedown');
- $actions .= $OUTPUT->action_icon($url, new pix_icon('t/down', get_string('movedown')));
+ $actions .= $OUTPUT->action_icon($url, new pix_icon('t/down', get_string('movedown')), null,
+ array('class' => 'action-icon action_movedown'));
}
}
- if (empty($tagcoll->component)) {
- // Edit.
- $url->param('action', 'colledit');
- $actions .= $OUTPUT->action_icon($url, new pix_icon('t/edit', get_string('edittagcoll', 'tag', $name)));
- }
if (!$tagcoll->isdefault && empty($tagcoll->component)) {
// Delete.
$url->param('action', 'colldelete');
- $actions .= $OUTPUT->action_icon($url, new pix_icon('t/delete', get_string('delete')));
+ $actions .= $OUTPUT->action_icon('#', new pix_icon('t/delete', get_string('delete')), null,
+ array('data-url' => $url, 'data-collname' => $name,
+ 'class' => 'action-icon action_delete'));
}
- $manageurl = new moodle_url('/tag/manage.php', array('tc' => $tagcoll->id));
$component = '';
if ($tagcoll->component) {
$component = ($tagcoll->component === 'core' || preg_match('/^core_/', $tagcoll->component)) ?
(array_key_exists($key, $validareas) ? "" : "class=\"hidden\"") .
">{$allareas[$key]}</li>";
}, array_keys($allareas));
+ $displayname = new \core_tag\output\tagcollname($tagcoll);
+ $searchable = new \core_tag\output\tagcollsearchable($tagcoll);
$this->data[] = array(
- html_writer::link($manageurl, $name),
+ $displayname->render($OUTPUT),
$component,
"<ul data-collectionid=\"{$tagcoll->id}\">" . join('', $areaslist) . '</ul>',
- $tagcoll->searchable ? get_string('yes') : '-',
+ $searchable->render($OUTPUT),
$actions);
$idx++;
}
--- /dev/null
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Contains class core_tag\output\tagcollname
+ *
+ * @package core_tag
+ * @copyright 2016 Marina Glancy
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+namespace core_tag\output;
+
+use context_system;
+use lang_string;
+use html_writer;
+use core_tag_collection;
+use moodle_url;
+
+/**
+ * Class to preapare a tag name for display.
+ *
+ * @package core_tag
+ * @copyright 2016 Marina Glancy
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class tagcollname extends \core\output\inplace_editable {
+
+ /**
+ * Constructor.
+ *
+ * @param \stdClass $tagcoll
+ */
+ public function __construct($tagcoll) {
+ $editable = has_capability('moodle/tag:manage', context_system::instance());
+ $edithint = new lang_string('editcollname', 'core_tag');
+ $value = $tagcoll->name;
+ $name = \core_tag_collection::display_name($tagcoll);
+ $editlabel = new lang_string('newcollnamefor', 'core_tag', $name);
+ $manageurl = new moodle_url('/tag/manage.php', array('tc' => $tagcoll->id));
+ $displayvalue = html_writer::link($manageurl, $name);
+ parent::__construct('core_tag', 'tagcollname', $tagcoll->id, $editable, $displayvalue, $value, $edithint, $editlabel);
+ }
+
+ /**
+ * Updates the value in database and returns itself, called from inplace_editable callback
+ *
+ * @param int $itemid
+ * @param mixed $newvalue
+ * @return \self
+ */
+ public static function update($itemid, $newvalue) {
+ global $DB;
+ require_capability('moodle/tag:manage', context_system::instance());
+ $tagcoll = $DB->get_record('tag_coll', array('id' => $itemid), '*', MUST_EXIST);
+ \core_tag_collection::update($tagcoll, array('name' => $newvalue));
+ return new self($tagcoll);
+ }
+}
--- /dev/null
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Contains class core_tag\output\tagcollsearchable
+ *
+ * @package core_tag
+ * @copyright 2016 Marina Glancy
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+namespace core_tag\output;
+
+use context_system;
+use lang_string;
+use core_tag_collection;
+
+/**
+ * Class to display tag collection searchable control
+ *
+ * @package core_tag
+ * @copyright 2016 Marina Glancy
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class tagcollsearchable extends \core\output\inplace_editable {
+
+ /**
+ * Constructor.
+ *
+ * @param \stdClass $tagcoll
+ */
+ public function __construct($tagcoll) {
+ $defaultid = core_tag_collection::get_default();
+ $editable = $tagcoll->id != $defaultid &&
+ has_capability('moodle/tag:manage', context_system::instance());
+ $edithint = new lang_string('editsearchable', 'core_tag');
+ $value = $tagcoll->searchable ? 1 : 0;
+
+ parent::__construct('core_tag', 'tagcollsearchable', $tagcoll->id, $editable, $value, $value, $edithint);
+ $this->set_type_toggle();
+ }
+
+ /**
+ * Export this data so it can be used as the context for a mustache template.
+ *
+ * @param \renderer_base $output
+ * @return \stdClass
+ */
+ public function export_for_template(\renderer_base $output) {
+ if ($this->value) {
+ $this->displayvalue = get_string('yes');
+ } else {
+ $this->displayvalue = get_string('no');
+ }
+
+ return parent::export_for_template($output);
+ }
+
+ /**
+ * Updates the value in database and returns itself, called from inplace_editable callback
+ *
+ * @param int $itemid
+ * @param mixed $newvalue
+ * @return \self
+ */
+ public static function update($itemid, $newvalue) {
+ global $DB;
+ require_capability('moodle/tag:manage', context_system::instance());
+ $tagcoll = $DB->get_record('tag_coll', array('id' => $itemid), '*', MUST_EXIST);
+ core_tag_collection::update($tagcoll, array('searchable' => $newvalue));
+ return new self($tagcoll);
+ }
+}
return \core_tag\output\tagareacollection::update($itemid, $newvalue);
} else if ($itemtype === 'tagareashowstandard') {
return \core_tag\output\tagareashowstandard::update($itemid, $newvalue);
+ } else if ($itemtype === 'tagcollname') {
+ return \core_tag\output\tagcollname::update($itemid, $newvalue);
+ } else if ($itemtype === 'tagcollsearchable') {
+ return \core_tag\output\tagcollsearchable::update($itemid, $newvalue);
}
}
$action = optional_param('action', '', PARAM_ALPHA);
$perpage = optional_param('perpage', DEFAULT_PAGE_SIZE, PARAM_INT);
$page = optional_param('page', 0, PARAM_INT);
-$notice = optional_param('notice', '', PARAM_ALPHA);
$tagcollid = optional_param('tc', 0, PARAM_INT);
$tagareaid = optional_param('ta', null, PARAM_INT);
switch($action) {
case 'colladd':
- case 'colledit':
- if ($action === 'colladd' || ($action === 'colledit' && $tagcoll && empty($tagcoll->component))) {
- $form = new core_tag_collection_form($manageurl, $tagcoll);
- if ($form->is_cancelled()) {
- redirect($manageurl);
- } else if ($data = $form->get_data()) {
- if ($action === 'colladd') {
- core_tag_collection::create($data);
- } else {
- core_tag_collection::update($tagcoll, $data);
- }
- redirect($manageurl);
- } else {
- $title = ($action === 'colladd') ?
- get_string('addtagcoll', 'tag') :
- get_string('edittagcoll', 'tag', core_tag_collection::display_name($tagcoll));
- $PAGE->navbar->add($title);
- echo $OUTPUT->header();
- echo $OUTPUT->heading($title, 2);
- $form->display();
- echo $OUTPUT->footer();
- exit;
- }
- }
+ require_sesskey();
+ $name = required_param('name', PARAM_NOTAGS);
+ $searchable = required_param('searchable', PARAM_BOOL);
+ core_tag_collection::create(array('name' => $name, 'searchable' => $searchable));
+ redirect($manageurl); // TODO message
break;
case 'colldelete':
- $confirm = optional_param('confirm', false, PARAM_BOOL);
- if (!$confirm) {
- echo $OUTPUT->header();
- $strconfirm = get_string('suredeletecoll', 'tag', core_tag_collection::display_name($tagcoll));
- $params = array('tc' => $tagcoll->id, 'confirm' => 1, 'sesskey' => sesskey(), 'action' => 'colldelete');
- $formcontinue = new single_button(new moodle_url($manageurl, $params), get_string('yes'));
- $formcancel = new single_button($manageurl, get_string('no'), 'get');
- echo $OUTPUT->confirm($strconfirm, $formcontinue, $formcancel);
- echo $OUTPUT->footer();
- die;
- }
if ($tagcoll && !$tagcoll->component) {
require_sesskey();
core_tag_collection::delete($tagcoll);
- redirect(new moodle_url($manageurl, array('notice' => 'changessaved')));
+ \core\notification::success(get_string('changessaved', 'core_tag'));
}
redirect($manageurl);
break;
if ($tagcoll) {
require_sesskey();
core_tag_collection::change_sortorder($tagcoll, -1);
- redirect(new moodle_url($manageurl, array('notice' => 'changessaved')));
+ redirect($manageurl, get_string('changessaved', 'core_tag'), null, \core\output\notification::NOTIFY_SUCCESS);
}
redirect($manageurl);
break;
if ($tagcoll) {
require_sesskey();
core_tag_collection::change_sortorder($tagcoll, 1);
- redirect(new moodle_url($manageurl, array('notice' => 'changessaved')));
+ redirect($manageurl, get_string('changessaved', 'core_tag'), null, \core\output\notification::NOTIFY_SUCCESS);
}
redirect($manageurl);
break;
$tagschecked = array($tagid);
}
core_tag_tag::delete_tags($tagschecked);
- redirect(new moodle_url($PAGE->url, $tagschecked ? array('notice' => 'deleted') : null));
+ if ($tagschecked) {
+ redirect($PAGE->url, get_string('deleted', 'core_tag'), null, \core\output\notification::NOTIFY_SUCCESS);
+ } else {
+ redirect($PAGE->url);
+ }
break;
case 'setflag':
require_sesskey();
if ($tagid) {
$tagobject->flag();
- redirect(new moodle_url($PAGE->url, array('notice' => 'flagged')));
+ redirect($PAGE->url, get_string('flagged', 'core_tag'), null, \core\output\notification::NOTIFY_SUCCESS);
}
redirect($PAGE->url);
break;
require_sesskey();
if ($tagid) {
$tagobject->reset_flag();
- redirect(new moodle_url($PAGE->url, array('notice' => 'resetflag')));
+ redirect($PAGE->url, get_string('resetflag', 'core_tag'), null, \core\output\notification::NOTIFY_SUCCESS);
}
redirect($PAGE->url);
break;
require_sesskey();
if ($tagid && $tagobject->update(
array('isstandard' => $isstandard ? 1 : 0))) {
- redirect(new moodle_url($PAGE->url, array('notice' => 'typechanged')));
+ redirect($PAGE->url, get_string('typechanged', 'core_tag'), null, \core\output\notification::NOTIFY_SUCCESS);
}
redirect($PAGE->url);
break;
$tagobject->update(array('isstandard' => 1));
}
}
- redirect(new moodle_url($PAGE->url, $tagobjects ? array('notice' => 'added') : null));
+ redirect($PAGE->url, $tagobjects ? get_string('added', 'core_tag') : null,
+ null, \core\output\notification::NOTIFY_SUCCESS);
break;
}
echo $OUTPUT->header();
-if ($notice && get_string_manager()->string_exists($notice, 'tag')) {
- echo $OUTPUT->notification(get_string($notice, 'tag'), 'notifysuccess');
-}
-
if (!$tagcoll) {
// Tag collection is not specified. Display the overview of tag collections and tag areas.
$tagareastable = new core_tag_areas_table($manageurl);
echo $OUTPUT->heading(get_string('tagcollections', 'core_tag') . $OUTPUT->help_icon('tagcollection', 'tag'), 3);
echo html_writer::table($colltable);
$url = new moodle_url($manageurl, array('action' => 'colladd'));
- echo html_writer::div(html_writer::link($url, get_string('addtagcoll', 'tag')), 'mdl-right addtagcoll');
+ echo html_writer::div(html_writer::link('#', get_string('addtagcoll', 'tag'), array('data-url' => $url)),
+ 'mdl-right addtagcoll');
echo $OUTPUT->heading(get_string('tagareas', 'core_tag'), 3);
echo html_writer::table($tagareastable);
-@core @core_tag
+@core @core_tag @javascript
Feature: Managers can create and manage tag collections
In order to use tags effectively
As a manager
And I follow "Add tag collection"
And I set the following fields to these values:
| Name | Hobbies |
- And I press "Save changes"
+ And I press "Create"
Scenario: Adding tag collections
When I follow "Hobbies"
And I log out
Scenario: Editing tag collections
- When I follow "Edit tag collection Hobbies"
- And I set the following fields to these values:
- | Name | Newname |
- And I press "Save changes"
+ When I click on "Edit tag collection name" "link" in the "//table[contains(@class,'tag-collections-table')]//tr[contains(.,'Hobbies')]" "xpath_element"
+ And I set the field "New name for tag collection Hobbies" to "Newname"
+ And I press key "13" in the field "New name for tag collection Hobbies"
Then I should not see "Hobbies"
And I should see "Newname"
And I log out
When I follow "Add tag collection"
And I set the following fields to these values:
| Name | Blogging |
- And I press "Save changes"
+ And I press "Create"
Then "Blogging" "link" should appear after "Hobbies" "link"
And I click on "Move up" "link" in the "Blogging" "table_row"
And "Blogging" "link" should appear before "Hobbies" "link"
And I should not see "Hobbies"
And I log out
- @javascript
Scenario: Assigning tag area to tag collection
And I should see "User interests" in the "//table[contains(@class,'tag-collections-table')]//tr[contains(.,'Default collection')]" "xpath_element"
And I should not see "User interests" in the "//table[contains(@class,'tag-collections-table')]//tr[contains(.,'Hobbies')]" "xpath_element"
And I should see "Hobbies" in the "//table[contains(@class,'tag-areas-table')]//tr[contains(.,'User interests')]" "xpath_element"
And I log out
- @javascript
Scenario: Disabling tag areas
When I click on "Disable" "link" in the "//table[contains(@class,'tag-areas-table')]//tr[contains(.,'User interests')]" "xpath_element"
- And I should see "User interests" in the "table.tag-collections-table" "css_element"
+ And I should not see "User interests" in the "table.tag-collections-table" "css_element"
And I click on "Enable" "link" in the "//table[contains(@class,'tag-areas-table')]//tr[contains(.,'User interests')]" "xpath_element"
And I should see "User interests" in the "//table[contains(@class,'tag-collections-table')]//tr[contains(.,'Default collection')]" "xpath_element"
And I log out
- @javascript
Scenario: Deleting non-empty tag collections
When I click on "Change tag collection" "link" in the "//table[contains(@class,'tag-areas-table')]//tr[contains(.,'User interests')]" "xpath_element"
And I set the field "Change tag collection of area User interests" to "Hobbies"
Then I should see "Are you sure you want to delete tag collection \"Hobbies\"?"
And I press "Yes"
And I should not see "Hobbies"
- And "User interests" "text" should exist in the "//table[contains(@class,'tag-collections-table')]//tr[contains(.,'Default collection')]" "xpath_element"
+ And I should see "User interests" in the "//table[contains(@class,'tag-collections-table')]//tr[contains(.,'Default collection')]" "xpath_element"
And I log out
- @javascript
Scenario: Moving tags when changing tag collections
And I follow "Preferences" in the user menu
And I follow "Edit profile"
And I should see "Tag2"
And I log out
- @javascript
Scenario: Creating searchable and non-searchable tag collections
And I follow "Add tag collection"
And I set the following fields to these values:
| Name | Hiddencoll |
| Searchable | 0 |
- And I press "Save changes"
+ And I press "Create"
And "Yes" "text" should not exist in the "//table[contains(@class,'tag-collections-table')]//tr[contains(.,'Hiddencoll')]" "xpath_element"
And I navigate to "Tags" node in "Site pages"
Then the "Select tag collection" select box should contain "Default collection"
And the "Select tag collection" select box should contain "Hobbies"
And the "Select tag collection" select box should not contain "Hiddencoll"
And I navigate to "Manage tags" node in "Site administration > Appearance"
- And I click on "Edit" "link" in the "Hobbies" "table_row"
- And I set the following fields to these values:
- | Searchable | 0 |
- And I press "Save changes"
+ And I click on "Change searchable" "link" in the "Hobbies" "table_row"
And I navigate to "Tags" node in "Site pages"
And "Select tag collection" "select" should not exist
And I log out