summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcristo-rabani <cristo.rabani@gmail.com>2015-03-24 20:04:28 +0100
committercristo-rabani <cristo.rabani@gmail.com>2015-03-24 20:04:28 +0100
commited3ec96838eb35105e847c4691ddf57893ae7e97 (patch)
tree994c582b1eb70a915920e4acaa9e4ac5225beb4a /src
parent382804e44c88c96ad50d50788f9f0bdfcad8dd40 (diff)
downloadetherpad-lite-ed3ec96838eb35105e847c4691ddf57893ae7e97.zip
own list
Diffstat (limited to 'src')
-rw-r--r--src/static/js/AttributeManager.js54
1 files changed, 29 insertions, 25 deletions
diff --git a/src/static/js/AttributeManager.js b/src/static/js/AttributeManager.js
index 5e782307..af81bb41 100644
--- a/src/static/js/AttributeManager.js
+++ b/src/static/js/AttributeManager.js
@@ -159,33 +159,37 @@ AttributeManager.prototype = _(AttributeManager.prototype).extend({
* @param attributeName the name of the attribute to remove, e.g. list
* @param attributeValue if given only attributes with equal value will be removed
*/
- removeAttributeOnLine: function(lineNum, attributeName, attributeValue){
- var builder = Changeset.builder(this.rep.lines.totalWidth());
- var hasMarker = this.lineHasMarker(lineNum);
- var found = false;
+ removeAttributeOnLine: function(lineNum, attributeName, attributeValue){
+ var builder = Changeset.builder(this.rep.lines.totalWidth());
+ var hasMarker = this.lineHasMarker(lineNum);
+ var found = false;
- var attribs = _(this.getAttributesOnLine(lineNum)).map(function (attrib) {
- if (attrib[0] === attributeName && (!attributeValue || attrib[0] === attributeValue)){
- found = true;
- return [attributeName, ''];
- }
- return attrib;
- });
+ var attribs = _(this.getAttributesOnLine(lineNum)).map(function (attrib) {
+ if (attrib[0] === attributeName && (!attributeValue || attrib[0] === attributeValue)){
+ found = true;
+ return [attributeName, ''];
+ }
+ return attrib;
+ });
- if (!found) {
- return;
- }
- ChangesetUtils.buildKeepToStartOfRange(this.rep, builder, [lineNum, 0]);
- var list = _.chain(attribs).filter(function(a){return !!a[1];}).map(function(a){return a[0];}).value();
- //if we have marker and any of attributes don't need to have marker. we need delete it
- if(hasMarker && !_.intersection(lineAttributes,list)){
- ChangesetUtils.buildRemoveRange(this.rep, builder, [lineNum, 1], [lineNum, 2]);
- }else{
- ChangesetUtils.buildKeepRange(this.rep, builder, [lineNum, 1], [lineNum, 2], attribs, this.rep.apool);
- }
-
- return this.applyChangeset(builder);
- },
+ if (!found) {
+ return;
+ }
+
+ ChangesetUtils.buildKeepToStartOfRange(this.rep, builder, [lineNum, 0]);
+
+ var countAttribsWithMarker = _.chain(attribs).filter(function(a){return !!a[1];})
+ .map(function(a){return a[0];}).difference(['author', 'lmkr', 'insertorder', 'start']).size().value();
+
+ //if we have marker and any of attributes don't need to have marker. we need delete it
+ if(hasMarker && !countAttribsWithMarker){
+ ChangesetUtils.buildRemoveRange(this.rep, builder, [lineNum, 0], [lineNum, 1]);
+ }else{
+ ChangesetUtils.buildKeepRange(this.rep, builder, [lineNum, 0], [lineNum, 1], attribs, this.rep.apool);
+ }
+
+ return this.applyChangeset(builder);
+ },
/*
Sets a specified attribute on a line