blob: 8917a053577d10e48acbce7b774368c2e38671d7 [file] [log] [blame]
// Paste Plain Text plugin for Xinha
// Distributed under the same terms as Xinha itself.
// This notice MUST stay intact for use (see license.txt).
(function(){
Xinha.plugins.AboutBox = AboutBox;
function AboutBox(editor) {
this.editor = editor;
}
AboutBox._pluginInfo = {
name : "AboutBox",
developer : "The Xinha Core Developer Team"
};
AboutBox.prototype._lc = function(string) {
return Xinha._lc(string, 'AboutBox');
};
AboutBox.prototype._prepareDialog = function()
{
var self = this;
var editor = this.editor;
Xinha.loadStyle ('about.css', 'AboutBox', 'aboutCSS');
/// Now we have everything we need, so we can build the dialog.
this.dialog = new Xinha.Dialog(editor, AboutBox.html, 'Xinha',{width:600})
this.dialog.getElementById('close').onclick = function() { self.dialog.hide()};
this.dialog.getElementById('xinha_logo').src = _editor_url + 'images/xinha_logo.gif';
var tabs = this.dialog.getElementsByClassName('tab');
this.currentTab = tabs[0];
tabs.forEach(function(tab){
//alert (tab);
tab.onclick = function() {
if (self.currentTab)
{
Xinha._removeClass(self.currentTab,'tab-current');
self.dialog.getElementById(self.currentTab.rel).style.display = 'none';
}
Xinha._addClass(tab, 'tab-current');
tab.blur();
self.currentTab = tab;
self.dialog.getElementById(tab.rel).style.display = 'block';
}
})
this.fillPlugins();
this.fillVersion();
this.dialog.onresize = function ()
{
this.getElementById("content").style.height =
parseInt(this.height,10) // the actual height of the dialog
- this.getElementById('h1').offsetHeight // the title bar
- this.getElementById('buttons').offsetHeight // the buttons
- 100 // we have a padding at the bottom, gotta take this into acount
+ 'px'; // don't forget this ;)
//this.getElementById("content").style.width =(this.width - 2) + 'px'; // and the width
}
};
AboutBox.prototype.fillPlugins = function()
{
var e = this.editor;
var tbody = this.dialog.getElementById('plugins_table');
var tr,td,a;
var j = 0;
for (var i in e.plugins)
{
var info = e.plugins[i];
tr = document.createElement('tr');
if (j%2) tr.style.backgroundColor = '#e5e5e5';
tbody.appendChild(tr);
td = document.createElement('td');
td.innerHTML = info.name;
if (info.version) td.innerHTML += ' v'+info.version;
tr.appendChild(td);
td = document.createElement('td');
if (info.developer)
{
if (info.developer_url)
{
td.innerHTML = '<a target="_blank" href="'+info.developer_url+'">'+info.developer+'</a>';
}
else
{
td.innerHTML = info.developer
}
}
tr.appendChild(td);
td = document.createElement('td');
if (info.sponsor)
{
if (info.sponsor_url)
{
td.innerHTML = '<a target="_blank" href="'+info.sponsor_url+'">'+info.sponsor+'</a>';
}
else
{
td.innerHTML = info.sponsor
}
}
tr.appendChild(td);
td = document.createElement('td');
if (info.license)
{
td.innerHTML = info.license;
}
else
{
td.innerHTML = 'htmlArea';
}
tr.appendChild(td);
j++;
}
}
AboutBox.prototype.fillVersion = function()
{
var ver = Xinha.version;
this.dialog.getElementById('version').innerHTML = '<pre>'
+ '\nRelease: ' + ver.Release + ' (' + ver.Date + ')'
+ '\nHead: ' + ver.Head
+ '\nRevision: ' + ver.Revision
+ '\nLast Changed By: ' + ver.RevisionBy
+ '\n' +
'</pre>';
}
AboutBox.prototype.show = function()
{
var self = this;
if (!AboutBox.html)
{
if (AboutBox.loading) return;
AboutBox.loading = true;
Xinha._getback(Xinha.getPluginDir("AboutBox") + '/dialog.html', function(getback) { AboutBox.html = getback; self.show()});
return;
}
if (!this.dialog) this._prepareDialog();
// here we can pass values to the dialog
// each property pair consists of the "name" of the input we want to populate, and the value to be set
var inputs =
{
inputArea : '' // we want the textarea always to be empty on showing
}
// now calling the show method of the Xinha.Dialog object to set the values and show the actual dialog
this.dialog.show(inputs);
// Init the sizes (only if we have set up the custom resize function)
//this.dialog.onresize();
};
})()