|
|
Index: app/views/admin/page/edit.rhtml
===================================================================
--- app/views/admin/page/edit.rhtml (revision 562)
+++ app/views/admin/page/edit.rhtml (working copy)
@@ -28,7 +28,7 @@
return false;
}
tabControl.tabs.each(function(pair){
- if (tabControl.tabs[pair.key].caption == name) {
+ if (tabControl.tabs.get(pair.key).caption == name) {
result = false;
alert('Part name must be unique.');
throw $break;
Index: public/javascripts/string.js
===================================================================
--- public/javascripts/string.js (revision 562)
+++ public/javascripts/string.js (working copy)
@@ -1,5 +1,4 @@
Object.extend(String.prototype, {
-
upcase: function() {
return this.toUpperCase();
},
@@ -8,10 +7,6 @@
return this.toLowerCase();
},
- strip: function() {
- return this.replace(/^\s+/, '').replace(/\s+$/, '');
- },
-
toInteger: function() {
return parseInt(this);
},
@@ -19,5 +14,4 @@
toSlug: function() {
return this.strip().downcase().replace(/[^-a-z0-9~\s\.:;+=_]/g, '').replace(/[\s\.:;=+]+/g, '-');
}
-
-});
\ No newline at end of file
+});
Index: public/javascripts/tabcontrol.js
===================================================================
--- public/javascripts/tabcontrol.js (revision 562)
+++ public/javascripts/tabcontrol.js (working copy)
@@ -1,9 +1,4 @@
-var TabControl = Class.create();
-
-TabControl.controls = $H();
-TabControl.BadTabError = new Error('TabControl: Invalid tab.');
-
-TabControl.prototype = {
+TabControl = Class.create({
/*
Initializes a tab control. The variable +element_id+ must be the id of an HTML element
containing one element with it's class name set to 'tabs' and another element with it's
@@ -13,7 +8,7 @@
TabControl.controls[element_id] = this;
this.control_id = element_id;
this.element = $(element_id);
- this.tab_container = document.getElementsByClassName('tabs', this.element).first();
+ this.tab_container = this.element.down('.tabs');
this.tabs = $H();
},
@@ -24,17 +19,16 @@
itself. When a tab is initially added the page element is hidden.
*/
addTab: function(tab_id, caption, page) {
- new Insertion.Bottom(
- this.tab_container,
- '' + caption + ''
+ this.tab_container.insert(
+ '#{caption}'.interpolate({
+ id: this.control_id, tab_id: tab_id, caption: caption
+ })
);
var tab = this.tab_container.lastChild;
tab.tab_id = tab_id;
tab.caption = caption;
tab.page = $(page);
- this.tabs[tab_id] = tab;
+ this.tabs.set(tab_id, tab);
this._setNotHere(tab);
return tab;
},
@@ -47,11 +41,8 @@
var id = t.tab_id;
Element.remove(t.page);
Element.remove(t);
- new_tabs = $H();
- this.tabs.each(function(pair) {
- if (pair.key != id) new_tabs[pair.key] = pair.value;
- });
- this.tabs = new_tabs;
+ this.tabs.unset(id);
+
if (this.selected.tab_id == id) {
var first = this.firstTab();
if (typeof first != 'undefined') this.select(first.tab_id);
@@ -73,22 +64,21 @@
} else {
this._setNotHere(pair.key);
}
- }.bind(this));
- false;
+ }, this);
},
/*
Returns the first tab element that was added using #addTab().
*/
firstTab: function() {
- return this.tabs[this.tabs.keys().first()];
+ return this.tabs.get(this.tabs.keys().first());
},
/*
Returns the the last tab element that was added using #addTab().
*/
lastTab: function() {
- return this.tabs[this.tabs.keys().last()];
+ return this.tabs.get(this.tabs.keys().last());
},
/*
@@ -127,7 +117,7 @@
*/
_tabify: function(something) {
if (typeof something == 'string') {
- var object = this.tabs[something];
+ var object = this.tabs.get(something);
} else {
var object = something;
}
@@ -137,4 +127,7 @@
throw TabControl.BadTabError;
}
}
-};
\ No newline at end of file
+});
+
+TabControl.controls = $H();
+TabControl.BadTabError = new Error('TabControl: Invalid tab.');
Index: public/javascripts/tag_reference_search.js
===================================================================
--- public/javascripts/tag_reference_search.js (revision 562)
+++ public/javascripts/tag_reference_search.js (working copy)
@@ -1,5 +1,5 @@
function hasWordInElement(word, element) {
- if(element.nodeType == Node.TEXT_NODE) {
+ if (element.nodeType == Node.TEXT_NODE) {
return element.nodeValue.match(word) != null;
} else {
return $A(element.childNodes).any(function (child) {
@@ -11,18 +11,13 @@
var searchingOn = ""
function observeTagSearch(element, value) {
- if(value.length < 3 && searchingOn != "") {
+ if (value.length < 3 && searchingOn != "") {
searchingOn = "";
- divs = $$("div.tag-description");
- $A(divs).each(function(div){ Element.show(div); });
- } else if(value.length >= 3 && searchingOn != value) {
+ $$("div.tag-description").invoke('show');
+ } else if (value.length >= 3 && searchingOn != value) {
searchingOn = value
- divs = $$("div.tag-description");
- $A(divs).each(function (div){
- if(hasWordInElement(value, div))
- Element.show(div);
- else
- Element.hide(div);
+ $$("div.tag-description").each(function(div) {
+ div[hasWordInElement(value, div) ? 'show' : 'hide']();
});
}
-}
\ No newline at end of file
+}
Index: public/javascripts/sitemap.js
===================================================================
--- public/javascripts/sitemap.js (revision 562)
+++ public/javascripts/sitemap.js (working copy)
@@ -1,23 +1,17 @@
-var SiteMap = Class.create();
-SiteMap.prototype = Object.extend({}, RuledTable.prototype); // Inherit from RuledTable
-
-Object.extend(SiteMap.prototype, {
-
- ruledTableInitialize: RuledTable.prototype.initialize,
-
- initialize: function(id, expanded) {
- this.ruledTableInitialize(id);
+var SiteMap = Class.create(RuledTable, {
+ initialize: function($super, id, expanded) {
+ $super(id);
this.expandedRows = expanded
},
onRowSetup: function(row) {
- Event.observe(row, 'click', this.onMouseClickRow.bindAsEventListener(this), false);
+ Event.observe(row, 'click', this.onMouseClickRow.bindAsEventListener(this));
},
onMouseClickRow: function(event) {
- var element = Event.element(event);
+ var element = event.element();
if (this.isExpander(element)) {
- var row = Event.findElement(event, 'tr');
+ var row = event.findElement('tr');
if (this.hasChildren(row)) {
this.toggleBranch(row, element);
}
@@ -25,19 +19,19 @@
},
hasChildren: function(row) {
- return ! /\bno-children\b/.test(row.className);
+ return !row.hasClassName('no-children');
},
isExpander: function(element) {
- return (element.tagName.strip().downcase() == 'img') && /\bexpander\b/i.test(element.className);
+ return element.match('img.expander');
},
isExpanded: function(row) {
- return /\bchildren-visible\b/i.test(row.className);
+ return row.hasClassName('children-visible');
},
isRow: function(element) {
- return element.tagName && (element.tagName.strip().downcase() == 'tr');
+ return element.tagName && element.match('tr');
},
extractLevel: function(row) {
@@ -51,12 +45,7 @@
},
getExpanderImageForRow: function(row) {
- var images = $A(row.getElementsByTagName('img', row));
- var expanders = [];
- images.each(function(image){
- expanders.push(image);
- }.bind(this));
- return expanders.first();
+ return row.down('img');
},
saveExpandedCookie: function() {
@@ -65,40 +54,35 @@
hideBranch: function(row, img) {
var level = this.extractLevel(row);
- var sibling = row.nextSibling;
- while(sibling != null) {
+ var sibling = row.next();
+ while (sibling != null) {
if (this.isRow(sibling)) {
if (this.extractLevel(sibling) <= level) break;
- Element.hide(sibling);
+ sibling.hide();
}
- sibling = sibling.nextSibling;
+ sibling = sibling.next();
}
var pageId = this.extractPageId(row);
- var newExpanded = [];
- for(i = 0; i < this.expandedRows.length; i++)
- if(this.expandedRows[i] != pageId)
- newExpanded.push(this.expandedRows[i]);
- this.expandedRows = newExpanded;
+ this.expandedRows = this.expandedRows.reject(function(row) { return row == pageId });
this.saveExpandedCookie();
- if (img == null)
- img = this.getExpanderImageForRow(row);
+ if (img == null) img = this.getExpanderImageForRow(row);
img.src = img.src.replace(/collapse/, 'expand');
- Element.removeClassName(row, 'children-visible');
- Element.addClassName(row, 'children-hidden');
+ row.removeClassName('children-visible');
+ row.addClassName('children-hidden');
},
showBranchInternal: function(row, img) {
var level = this.extractLevel(row);
- var sibling = row.nextSibling;
+ var sibling = row.next();
var children = false;
var childOwningSiblings = [];
- while(sibling != null) {
+ while (sibling != null) {
if (this.isRow(sibling)) {
var siblingLevel = this.extractLevel(sibling);
if (siblingLevel <= level) break;
if (siblingLevel == level + 1) {
- Element.show(sibling);
- if(sibling.className.match(/children-visible/)) {
+ sibling.show();
+ if(sibling.hasClassName('children-visible')) {
childOwningSiblings.push(sibling);
} else {
this.hideBranch(sibling);
@@ -106,18 +90,16 @@
}
children = true;
}
- sibling = sibling.nextSibling;
+ sibling = sibling.next();
}
- if (!children)
- this.getBranch(row);
- if (img == null)
- img = this.getExpanderImageForRow(row);
+ if (!children) this.getBranch(row);
+ if (img == null) img = this.getExpanderImageForRow(row);
img.src = img.src.replace(/expand/, 'collapse');
- for(i=0; i < childOwningSiblings.length; i++) {
- this.showBranch(childOwningSiblings[i], null);
- }
- Element.removeClassName(row, 'children-hidden');
- Element.addClassName(row, 'children-visible');
+ childOwningSiblings.each(function(sib) {
+ this.showBranch(sib, null);
+ }, this);
+ row.removeClassName('children-hidden');
+ row.addClassName('children-visible');
},
showBranch: function(row, img) {
@@ -134,13 +116,13 @@
'../admin/ui/pages/children/' + id + '/' + level,
{
asynchronous: true,
- insertion: Insertion.After,
+ insertion: "after",
onLoading: function(request) {
- Element.show('busy-' + id);
+ $('busy-' + id).show();
this.updating = true;
}.bind(this),
onComplete: function(request) {
- var sibling = row.nextSibling;
+ var sibling = row.next();
while (sibling != null) {
if (this.isRow(sibling)) {
var siblingLevel = this.extractLevel(sibling);
@@ -150,14 +132,14 @@
sibling = sibling.nextSibling;
}
this.updating = false;
- Effect.Fade('busy-' + id);
+ $('busy-' + id).fade();
}.bind(this)
}
);
},
toggleBranch: function(row, img) {
- if (! this.updating) {
+ if (!this.updating) {
if (this.isExpanded(row)) {
this.hideBranch(row, img);
} else {
@@ -165,5 +147,4 @@
}
}
}
-
});
Index: public/javascripts/ruledtable.js
===================================================================
--- public/javascripts/ruledtable.js (revision 562)
+++ public/javascripts/ruledtable.js (working copy)
@@ -1,28 +1,19 @@
-var RuledTable = Class.create();
-RuledTable.prototype = {
-
+var RuledTable = Class.create({
initialize: function(element_id) {
- var table = $(element_id);
- var rows = table.getElementsByTagName('tr');
- for (var i = 0; i < rows.length; i++) {
- this.setupRow(rows[i]);
- }
+ var table = $(element_id).select('tr').each(this.setupRow, this)
},
onMouseOverRow: function(event) {
- // Element.addClassName(this, 'highlight');
- this.className = this.className.replace(/\s*\bhighlight\b|$/, ' highlight'); // faster than the above
+ this.addClassName('highlight');
},
onMouseOutRow: function(event) {
- // Element.removeClassName(this, 'highlight');
- this.className = this.className.replace(/\s*\bhighlight\b\s*/, ' '); // faster than the above
+ this.removeClassName('highlight');
},
setupRow: function(row) {
- Event.observe(row, 'mouseover', this.onMouseOverRow.bindAsEventListener(row));
- Event.observe(row, 'mouseout', this.onMouseOutRow.bindAsEventListener(row));
+ row.observe('mouseover', this.onMouseOverRow);
+ row.observe('mouseout', this.onMouseOutRow);
if (this.onRowSetup) this.onRowSetup(row);
}
-
-};
\ No newline at end of file
+});
|