1 define(function(require) {
7 var $ = require('libs/jquery'),
8 _ = require('libs/underscore'),
9 genericElement = require('modules/documentCanvas/canvas/genericElement'),
10 Dialog = require('views/dialog/dialog'),
11 boxTemplate = require('libs/text!./box.html'),
12 linkElement = Object.create(genericElement);
15 _.extend(linkElement, {
17 genericElement.init.call(this);
18 _.bindAll(this, 'changeLink', 'deleteLink');
20 this.box = $(_.template(boxTemplate)({href: this.wlxmlNode.getAttr('href')}));
21 this.box.find('.change').on('click', this.changeLink);
22 this.box.find('.delete').on('click', this.deleteLink);
24 this.addWidget(this.box);
26 markAsCurrent: function(toggle) {
27 this.box.toggle(toggle);
29 onNodeAttrChange: function(event) {
30 if(event.meta.attr === 'href') {
31 var link = this.box.find('[link]');
32 link.text(event.meta.newVal);
33 link.attr('href', event.meta.newVal);
37 changeLink: function(e) {
39 dialog = Dialog.create({
40 title: gettext('Edit link'),
41 executeButtonText: gettext('Apply'),
42 cancelButtonText: gettext('Cancel'),
44 {label: gettext('Link'), name: 'href', type: 'input', initialValue: el.wlxmlNode.getAttr('href')}
50 dialog.on('execute', function(event) {
51 el.wlxmlNode.document.transaction(function() {
52 el.wlxmlNode.setAttr('href', event.formData.href);
56 description: gettext('Edit link')
63 deleteLink: function() {
65 el.wlxmlNode.document.transaction(function() {
66 el.wlxmlNode.unwrapContent();
69 description: gettext('Remove link')