Commit a95fd969 authored by Giuseppe Terrasi's avatar Giuseppe Terrasi

parents be765018 c4907391
locale/it/LC_MESSAGES/django.mo
locale/it/LC_MESSAGES/django.po
settings_local.py
osqa.wsgi
log/django.osqa.log
Elenco dei maggiori cambiamenti tra la nostra versione e upstream.
= forum/registry.py =
Rimossi da ui.registerui.HEADER_LINKS i seguenti per non farli apparire nel subheader:
ui.Link(_('faq'), ui.Url('faq'), weight=400, name='FAQ'),
ui.Link(_('about'), ui.Url('about'), weight=300, name='ABOUT'),
= forum_modules/openidauth/authentication.py =
Aggiunte le classi LaunchpadAuth e UbuntuSSOAuth.
......@@ -20,43 +13,7 @@ Aggiunta cartella "it", la nostra localizzazione, prima non presente.
Disabilitati i seguenti moduli, di default abilitati: mysqlfulltext, localauth, oauthauth, facebookauth, sphinxfulltext
= forum/skins/light/media/js/wmd/wmd.js =
File nel quale sono state apportate direttamente delle traduzioni.
= forum/skins/light/media/js/osqa.ask.js =
File nel quale sono state apportate direttamente delle traduzioni.
= forum/skins/light/templates/auth/signin.html =
Nascosti, commentati, metodi di autenticazione e/o registrazione non utilizzati.
= ask.jquery.header.string.replace.js =
Aggiunto questo file e collegato all'interno di header.html
Questi javascript usando il metodo replaceWith agiscono sui selettori css presenti nell'output html ed eseguono una serie di sostituzioni.
Nello specifico, l'introduzione di questo work-around serve a risolvere il problema della capitalizzazone del testo mostrato nell'header che risulta essere difficoltoso per via delle diverse stringhe del file .po comuni a più parti dell'interfaccia.
= ask.jquery.subscriptions.string.replace.js =
Eliminata capitalizzazione parola "impostazioni" in subscriptions.html usando javascript. La presenza di un link dinamico non permette l'uso di string replace. L'effetto è stato raggiunto in questa maniera:
var subscriptionDiv = $('#navBar a#subscriptions_settings_button');
subscriptionDiv.text('impostazioni');
= forum/skins/light/templates/users/online_users.html =
FIXME: proporre cambiamento upstream come da lp:~giuseppeterrasi/ubuntu-it-ask/l18ned
= forum/skins/light/templates/users/subscriptions.html =
FIXME: proporre cambiamento upstream come da lp:~giuseppeterrasi/ubuntu-it-ask/l18ned
= forum/skins/light/templates/users/users.html =
FIXME: proporre cambiamento upstream come da lp:~giuseppeterrasi/ubuntu-it-ask/l18ned
= forum/templatetags/extra_tags.py =
FIXME: proporre cambiamento upstream come da lp:~giuseppeterrasi/ubuntu-it-ask/l18ned
DISABLED_MODULES = ['books', 'recaptcha', 'project_badges', 'mysqlfulltext', 'localauth', 'oauthauth', 'facebookauth']
= forum_modules/pgfulltext =
......
......@@ -167,6 +167,9 @@ this.makeHtml = function(text) {
// attacklab: Restore tildes
text = text.replace(/~T/g,"~");
text = text.replace(/&amp;lt;/g,"<");
text = text.replace(/&amp;gt;/g,">");
return text;
}
......
......@@ -28,8 +28,13 @@ function ajaxFileUpload(imageUrl)
if(error != ''){
alert(error);
}else{
if(fileURL == ''){
alert("There was an internal server error uploading your file.\nPermission denied.");
}
else{
imageUrl.attr('value', appUrl + fileURL);
}
}
},
error: function (data, status, e)
......
<public:component>
<script type="text/javascript">
// IE5.5+ PNG Alpha Fix v2.0 Alpha
// (c) 2004-2009 Angus Turnbull http://www.twinhelix.com
// This is licensed under the GNU LGPL, version 2.1 or later.
// For details, see: http://creativecommons.org/licenses/LGPL/2.1/
var IEPNGFix = window.IEPNGFix || {};
IEPNGFix.data = IEPNGFix.data || {};
// CONFIG: blankImg is the path to blank.gif, *relative to the HTML document*.
// Try either:
// * An absolute path like: '/images/blank.gif'
// * A path relative to this HTC file like: thisFolder + 'blank.gif'
var thisFolder = document.URL.replace(/(\\|\/)[^\\\/]*$/, '/');
IEPNGFix.blankImg = thisFolder + 'blank.gif';
IEPNGFix.fix = function(elm, src, t) {
// Applies an image 'src' to an element 'elm' using the DirectX filter.
// If 'src' is null, filter is disabled.
// Disables the 'hook' to prevent infinite recursion on setting BG/src.
// 't' = type, where background tile = 0, background = 1, IMG SRC = 2.
var h = this.hook.enabled;
this.hook.enabled = 0;
var f = 'DXImageTransform.Microsoft.AlphaImageLoader';
src = (src || '').replace(/\(/g, '%28').replace(/\)/g, '%29');
if (
src && !(/IMG|INPUT/.test(elm.nodeName) && (t != 2)) &&
elm.currentStyle.width == 'auto' && elm.currentStyle.height == 'auto'
) {
if (elm.offsetWidth) {
elm.style.width = elm.offsetWidth + 'px';
}
if (elm.clientHeight) {
elm.style.height = elm.clientHeight + 'px';
}
if (elm.currentStyle.display == 'inline') {
elm.style.display = 'inline-block';
}
}
if (t == 1) {
elm.style.backgroundImage = 'url("' + this.blankImg + '")';
}
if (t == 2) {
elm.src = this.blankImg;
}
if (elm.filters[f]) {
elm.filters[f].enabled = src ? true : false;
if (src) {
elm.filters[f].src = src;
}
} else if (src) {
elm.style.filter = 'progid:' + f + '(src="' + src +
'",sizingMethod="' + (t == 2 ? 'scale' : 'crop') + '")';
}
this.hook.enabled = h;
};
IEPNGFix.process = function(elm, init) {
// Checks the onpropertychange event (on first 'init' run, a fake event)
// and calls the filter-applying-functions.
if (
!/MSIE (5\.5|6)/.test(navigator.userAgent) ||
typeof elm.filters == 'unknown'
) {
return;
}
if (!this.data[elm.uniqueID]) {
this.data[elm.uniqueID] = {
className: ''
};
}
var data = this.data[elm.uniqueID],
evt = init ? { propertyName: 'src,backgroundImage' } : event,
isSrc = /src/.test(evt.propertyName),
isBg = /backgroundImage/.test(evt.propertyName),
isPos = /width|height|background(Pos|Rep)/.test(evt.propertyName),
isClass = !init && ((elm.className != data.className) &&
(elm.className || data.className));
if (!(isSrc || isBg || isPos || isClass)) {
return;
}
data.className = elm.className;
var blank = this.blankImg.match(/([^\/]+)$/)[1],
eS = elm.style,
eCS = elm.currentStyle;
// Required for Whatever:hover - erase set BG if className changes.
if (
isClass && (eS.backgroundImage.indexOf('url(') == -1 ||
eS.backgroundImage.indexOf(blank) > -1)
) {
return setTimeout(function() {
eS.backgroundImage = '';
}, 0);
}
// Foregrounds.
if (isSrc && elm.src && { IMG: 1, INPUT: 1 }[elm.nodeName]) {
if ((/\.png/i).test(elm.src)) {
if (!elm.oSrc) {
// MM rollover compat
elm.oSrc = elm.src;
}
this.fix(elm, elm.src, 2);
} else if (elm.src.indexOf(blank) == -1) {
this.fix(elm, '');
}
}
// Backgrounds.
var bgSrc = eCS.backgroundImage || eS.backgroundImage;
if ((bgSrc + elm.src).indexOf(blank) == -1) {
var bgPNG = bgSrc.match(/url[("']+(.*\.png[^\)"']*)[\)"']/i);
if (bgPNG) {
if (this.tileBG && !{ IMG: 1, INPUT: 1 }[elm.nodeName]) {
this.tileBG(elm, bgPNG[1]);
this.fix(elm, '', 1);
} else {
if (data.tiles && data.tiles.src) {
this.tileBG(elm, '');
}
this.fix(elm, bgPNG[1], 1);
this.childFix(elm);
}
} else {
if (data.tiles && data.tiles.src) {
this.tileBG(elm, '');
}
this.fix(elm, '');
}
} else if ((isPos || isClass) && data.tiles && data.tiles.src) {
this.tileBG(elm, data.tiles.src);
}
if (init) {
this.hook.enabled = 1;
elm.attachEvent('onpropertychange', this.hook);
}
};
IEPNGFix.childFix = function(elm) {
// "hasLayout" fix for unclickable children inside PNG backgrounds.
var tags = [
'a',
'input',
'select',
'textarea',
'button',
'iframe',
'object'
],
t = tags.length,
tFix = [];
while (t--) {
var pFix = elm.all.tags(tags[t]),
e = pFix.length;
while (e--) {
tFix.push(pFix[e]);
}
}
t = tFix.length;
if (t && (/relative|absolute/i).test(elm.currentStyle.position)) {
alert('IEPNGFix: Unclickable children of element:' +
'\n\n<' + elm.nodeName + (elm.id && ' id=' + elm.id) + '>');
}
while (t--) {
if (!(/relative|absolute/i).test(tFix[t].currentStyle.position)) {
tFix[t].style.position = 'relative';
}
}
};
IEPNGFix.hook = function() {
if (IEPNGFix.hook.enabled) {
IEPNGFix.process(element, 0);
}
};
IEPNGFix.process(element, 1);
</script>
</public:component>
// IE5.5+ PNG Alpha Fix v2.0 Alpha: Background Tiling Support
// (c) 2008-2009 Angus Turnbull http://www.twinhelix.com
// This is licensed under the GNU LGPL, version 2.1 or later.
// For details, see: http://creativecommons.org/licenses/LGPL/2.1/
var IEPNGFix = window.IEPNGFix || {};
IEPNGFix.tileBG = function(elm, pngSrc, ready) {
// Params: A reference to a DOM element, the PNG src file pathname, and a
// hidden "ready-to-run" passed when called back after image preloading.
var data = this.data[elm.uniqueID],
elmW = Math.max(elm.clientWidth, elm.scrollWidth),
elmH = Math.max(elm.clientHeight, elm.scrollHeight),
bgX = elm.currentStyle.backgroundPositionX,
bgY = elm.currentStyle.backgroundPositionY,
bgR = elm.currentStyle.backgroundRepeat;
// Cache of DIVs created per element, and image preloader/data.
if (!data.tiles) {
data.tiles = {
elm: elm,
src: '',
cache: [],
img: new Image(),
old: {}
};
}
var tiles = data.tiles,
pngW = tiles.img.width,
pngH = tiles.img.height;
if (pngSrc) {
if (!ready && pngSrc != tiles.src) {
// New image? Preload it with a callback to detect dimensions.
tiles.img.onload = function() {
this.onload = null;
IEPNGFix.tileBG(elm, pngSrc, 1);
};
return tiles.img.src = pngSrc;
}
} else {
// No image?
if (tiles.src) ready = 1;
pngW = pngH = 0;
}
tiles.src = pngSrc;
if (!ready && elmW == tiles.old.w && elmH == tiles.old.h &&
bgX == tiles.old.x && bgY == tiles.old.y && bgR == tiles.old.r) {
return;
}
// Convert English and percentage positions to pixels.
var pos = {
top: '0%',
left: '0%',
center: '50%',
bottom: '100%',
right: '100%'
},
x,
y,
pc;
x = pos[bgX] || bgX;
y = pos[bgY] || bgY;
if (pc = x.match(/(\d+)%/)) {
x = Math.round((elmW - pngW) * (parseInt(pc[1]) / 100));
}
if (pc = y.match(/(\d+)%/)) {
y = Math.round((elmH - pngH) * (parseInt(pc[1]) / 100));
}
x = parseInt(x);
y = parseInt(y);
// Handle backgroundRepeat.
var repeatX = { 'repeat': 1, 'repeat-x': 1 }[bgR],
repeatY = { 'repeat': 1, 'repeat-y': 1 }[bgR];
if (repeatX) {
x %= pngW;
if (x > 0) x -= pngW;
}
if (repeatY) {
y %= pngH;
if (y > 0) y -= pngH;
}
// Go!
this.hook.enabled = 0;
if (!({ relative: 1, absolute: 1 }[elm.currentStyle.position])) {
elm.style.position = 'relative';
}
var count = 0,
xPos,
maxX = repeatX ? elmW : x + 0.1,
yPos,
maxY = repeatY ? elmH : y + 0.1,
d,
s,
isNew;
if (pngW && pngH) {
for (xPos = x; xPos < maxX; xPos += pngW) {
for (yPos = y; yPos < maxY; yPos += pngH) {
isNew = 0;
if (!tiles.cache[count]) {
tiles.cache[count] = document.createElement('div');
isNew = 1;
}
var clipR = Math.max(0, xPos + pngW > elmW ? elmW - xPos : pngW),
clipB = Math.max(0, yPos + pngH > elmH ? elmH - yPos : pngH);
d = tiles.cache[count];
s = d.style;
s.behavior = 'none';
s.left = (xPos - parseInt(elm.currentStyle.paddingLeft)) + 'px';
s.top = yPos + 'px';
s.width = clipR + 'px';
s.height = clipB + 'px';
s.clip = 'rect(' +
(yPos < 0 ? 0 - yPos : 0) + 'px,' +
clipR + 'px,' +
clipB + 'px,' +
(xPos < 0 ? 0 - xPos : 0) + 'px)';
s.display = 'block';
if (isNew) {
s.position = 'absolute';
s.zIndex = -999;
if (elm.firstChild) {
elm.insertBefore(d, elm.firstChild);
} else {
elm.appendChild(d);
}
}
this.fix(d, pngSrc, 0);
count++;
}
}
}
while (count < tiles.cache.length) {
this.fix(tiles.cache[count], '', 0);
tiles.cache[count++].style.display = 'none';
}
this.hook.enabled = 1;
// Cache so updates are infrequent.
tiles.old = {
w: elmW,
h: elmH,
x: bgX,
y: bgY,
r: bgR
};
};
IEPNGFix.update = function() {
// Update all PNG backgrounds.
for (var i in IEPNGFix.data) {
var t = IEPNGFix.data[i].tiles;
if (t && t.elm && t.src) {
IEPNGFix.tileBG(t.elm, t.src);
}
}
};
IEPNGFix.update.timer = 0;
if (window.attachEvent && !window.opera) {
window.attachEvent('onresize', function() {
clearTimeout(IEPNGFix.update.timer);
IEPNGFix.update.timer = setTimeout(IEPNGFix.update, 100);
});
}
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="199.99998"
height="150"
viewBox="70.866 70.866 200 150.00001"
id="Layer_1"
xml:space="preserve"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="logo.svg"><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="640"
inkscape:window-height="480"
id="namedview10"
showgrid="false"
inkscape:zoom="1.5500001"
inkscape:cx="99.999992"
inkscape:cy="75"
inkscape:window-x="65"
inkscape:window-y="24"
inkscape:window-maximized="0"
inkscape:current-layer="Layer_1" /><title
id="title3027">Logo chiedi.ubuntu-it.org</title><metadata
id="metadata11"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Logo chiedi.ubuntu-it.org</dc:title><dc:date>07/08/2012</dc:date><dc:creator><cc:Agent><dc:title>Riccardo Padovani</dc:title></cc:Agent></dc:creator><dc:language>it-IT</dc:language><cc:license
rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></cc:Work><cc:License
rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"><cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires
rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires
rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:prohibits
rdf:resource="http://creativecommons.org/ns#CommercialUse" /><cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires
rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><defs
id="defs9" />
<g
transform="matrix(1.7639018,0,0,1.3229031,-79.134446,-41.629711)"
id="g3">
<path
d="m 170.479,190.605 c -8.43,4.971 -18.256,7.819 -28.747,7.819 -31.312,0 -56.693,-25.382 -56.693,-56.694 0,-31.311 25.382,-56.693 56.693,-56.693 31.31,0 56.692,25.382 56.692,56.693 0,10.328 -2.762,20.008 -7.585,28.346 l -0.012,-0.005 7.597,28.353 -28.354,-7.597 0.409,-0.222 z"
id="path5"
style="fill:#dd4814" />
</g>
<text
x="186.35173"
y="155.3188"
transform="scale(0.91960212,1.0874268)"
id="text2988"
xml:space="preserve"
style="font-size:64.76406097px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
sodipodi:linespacing="125%"><tspan
x="186.35173"
y="155.3188"
id="tspan2990">chiedi</tspan></text>
</svg>
\ No newline at end of file
// Simple Set Clipboard System
// Author: Joseph Huckaby
var ZeroClipboard = {
version: "1.0.7",
clients: {}, // registered upload clients on page, indexed by id
moviePath: 'ZeroClipboard.swf', // URL to movie
nextId: 1, // ID of next movie
$: function(thingy) {
// simple DOM lookup utility function
if (typeof(thingy) == 'string') thingy = document.getElementById(thingy);
if (!thingy.addClass) {
// extend element with a few useful methods
thingy.hide = function() { this.style.display = 'none'; };
thingy.show = function() { this.style.display = ''; };
thingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; };
thingy.removeClass = function(name) {
var classes = this.className.split(/\s+/);
var idx = -1;
for (var k = 0; k < classes.length; k++) {
if (classes[k] == name) { idx = k; k = classes.length; }
}
if (idx > -1) {
classes.splice( idx, 1 );
this.className = classes.join(' ');
}
return this;
};
thingy.hasClass = function(name) {
return !!this.className.match( new RegExp("\\s*" + name + "\\s*") );
};
}
return thingy;
},
setMoviePath: function(path) {
// set path to ZeroClipboard.swf
this.moviePath = path;
},
dispatch: function(id, eventName, args) {
// receive event from flash movie, send to client
var client = this.clients[id];
if (client) {
client.receiveEvent(eventName, args);
}
},
register: function(id, client) {
// register new client to receive events
this.clients[id] = client;
},
getDOMObjectPosition: function(obj, stopObj) {
// get absolute coordinates for dom element
var info = {
left: 0,
top: 0,
width: obj.width ? obj.width : obj.offsetWidth,
height: obj.height ? obj.height : obj.offsetHeight
};
while (obj && (obj != stopObj)) {
info.left += obj.offsetLeft;
info.top += obj.offsetTop;
obj = obj.offsetParent;
}
return info;
},
Client: function(elem) {
// constructor for new simple upload client
this.handlers = {};
// unique ID
this.id = ZeroClipboard.nextId++;
this.movieId = 'ZeroClipboardMovie_' + this.id;
// register client with singleton to receive flash events
ZeroClipboard.register(this.id, this);
// create movie
if (elem) this.glue(elem);
}
};
ZeroClipboard.Client.prototype = {
id: 0, // unique ID for us
ready: false, // whether movie is ready to receive events or not
movie: null, // reference to movie object
clipText: '', // text to copy to clipboard
handCursorEnabled: true, // whether to show hand cursor, or default pointer cursor
cssEffects: true, // enable CSS mouse effects on dom container
handlers: null, // user event handlers
glue: function(elem, appendElem, stylesToAdd) {
// glue to DOM element
// elem can be ID or actual DOM element object
this.domElement = ZeroClipboard.$(elem);
// float just above object, or zIndex 99 if dom element isn't set
var zIndex = 99;
if (this.domElement.style.zIndex) {
zIndex = parseInt(this.domElement.style.zIndex, 10) + 1;
}
if (typeof(appendElem) == 'string') {
appendElem = ZeroClipboard.$(appendElem);
}
else if (typeof(appendElem) == 'undefined') {
appendElem = document.getElementsByTagName('body')[0];
}
// find X/Y position of domElement
var box = ZeroClipboard.getDOMObjectPosition(this.domElement, appendElem);
// create floating DIV above element
this.div = document.createElement('div');
var style = this.div.style;
style.position = 'absolute';
style.left = '' + box.left + 'px';
style.top = '' + box.top + 'px';
style.width = '' + box.width + 'px';
style.height = '' + box.height + 'px';
style.zIndex = zIndex;
if (typeof(stylesToAdd) == 'object') {
for (addedStyle in stylesToAdd) {
style[addedStyle] = stylesToAdd[addedStyle];
}
}
// style.backgroundColor = '#f00'; // debug
appendElem.appendChild(this.div);
this.div.innerHTML = this.getHTML( box.width, box.height );
},
getHTML: function(width, height) {
// return HTML for movie
var html = '';
var flashvars = 'id=' + this.id +
'&width=' + width +
'&height=' + height;
if (navigator.userAgent.match(/MSIE/)) {
// IE gets an OBJECT tag
var protocol = location.href.match(/^https/i) ? 'https://' : 'http://';
html += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="'+protocol+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="'+width+'" height="'+height+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+ZeroClipboard.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+flashvars+'"/><param name="wmode" value="transparent"/></object>';
}
else {
// all other browsers get an EMBED tag
html += '<embed id="'+this.movieId+'" src="'+ZeroClipboard.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+flashvars+'" wmode="transparent" />';
}
return html;
},
hide: function() {
// temporarily hide floater offscreen
if (this.div) {
this.div.style.left = '-2000px';
}
},
show: function() {
// show ourselves after a call to hide()
this.reposition();
},
destroy: function() {
// destroy control and floater
if (this.domElement && this.div) {
this.hide();
this.div.innerHTML = '';
var body = document.getElementsByTagName('body')[0];
try { body.removeChild( this.div ); } catch(e) {;}
this.domElement = null;
this.div = null;
}
},
reposition: function(elem) {
// reposition our floating div, optionally to new container
// warning: container CANNOT change size, only position
if (elem) {
this.domElement = ZeroClipboard.$(elem);
if (!this.domElement) this.hide();
}
if (this.domElement && this.div) {
var box = ZeroClipboard.getDOMObjectPosition(this.domElement);
var style = this.div.style;
style.left = '' + box.left + 'px';
style.top = '' + box.top + 'px';
}
},
setText: function(newText) {
// set text to be copied to clipboard
this.clipText = newText;
if (this.ready) this.movie.setText(newText);
},
addEventListener: function(eventName, func) {
// add user event listener for event
// event types: load, queueStart, fileStart, fileComplete, queueComplete, progress, error, cancel
eventName = eventName.toString().toLowerCase().replace(/^on/, '');
if (!this.handlers[eventName]) this.handlers[eventName] = [];
this.handlers[eventName].push(func);
},
setHandCursor: function(enabled) {
// enable hand cursor (true), or default arrow cursor (false)
this.handCursorEnabled = enabled;
if (this.ready) this.movie.setHandCursor(enabled);
},
setCSSEffects: function(enabled) {
// enable or disable CSS effects on DOM container
this.cssEffects = !!enabled;
},
receiveEvent: function(eventName, args) {
// receive event from flash
eventName = eventName.toString().toLowerCase().replace(/^on/, '');
// special behavior for certain events
switch (eventName) {
case 'load':
// movie claims it is ready, but in IE this isn't always the case...
// bug fix: Cannot extend EMBED DOM elements in Firefox, must use traditional function
this.movie = document.getElementById(this.movieId);
if (!this.movie) {
var self = this;
setTimeout( function() { self.receiveEvent('load', null); }, 1 );
return;
}
// firefox on pc needs a "kick" in order to set these in certain cases
if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) {
var self = this;
setTimeout( function() { self.receiveEvent('load', null); }, 100 );
this.ready = true;
return;
}
this.ready = true;
this.movie.setText( this.clipText );
this.movie.setHandCursor( this.handCursorEnabled );
break;
case 'mouseover':
if (this.domElement && this.cssEffects) {
this.domElement.addClass('hover');
if (this.recoverActive) this.domElement.addClass('active');
}
break;
case 'mouseout':
if (this.domElement && this.cssEffects) {
this.recoverActive = false;
if (this.domElement.hasClass('active')) {
this.domElement.removeClass('active');
this.recoverActive = true;
}
this.domElement.removeClass('hover');
}
break;
case 'mousedown':
if (this.domElement && this.cssEffects) {
this.domElement.addClass('active');
}
break;
case 'mouseup':
if (this.domElement && this.cssEffects) {
this.domElement.removeClass('active');
this.recoverActive = false;
}
break;
} // switch eventName
if (this.handlers[eventName]) {
for (var idx = 0, len = this.handlers[eventName].length; idx < len; idx++) {
var func = this.handlers[eventName][idx];
if (typeof(func) == 'function') {
// actual function reference
func(this, args);
}
else if ((typeof(func) == 'object') && (func.length == 2)) {
// PHP style object + method, i.e. [myObject, 'myMethod']
func[0][ func[1] ](this, args);
}
else if (typeof(func) == 'string') {
// name of function
window[func](this, args);
}
} // foreach event handler defined
} // user defined handler for event
}
};
/*
** This file contains function to enable and
** disable Accessibility stylesheet in ubuntu-it
*/
//ACCESSIBILITY_CSS_THEME_DIR = 'light-drupal-theme/styles';
//ACCESSIBILITY_CSS_FILE_NAME = 'accessibility.css' ;
ACCESSIBILITY_CSS_ABSPATH = ['http://ubuntu-it.org/sites/all/themes/light-drupal-theme/styles/accessibility.css'];
ACCESSIBILITY_COOKIE_VALUE_ON = 'on';
ACCESSIBILITY_COOKIE_VALUE_OFF = 'off';
// This function adds the accessibility css into the Head section
// and set the cookie value ON
function accessibility_set_on () {
head = document.getElementsByTagName('head')[0];
for (i = 0; i < ACCESSIBILITY_CSS_ABSPATH.length ; i++) {
link = document.createElement('link');
link.setAttribute('type','text/css');
link.setAttribute('rel', 'stylesheet');
link.setAttribute('media', 'screen');
link.setAttribute('href', ACCESSIBILITY_CSS_ABSPATH[i]);
head.appendChild(link);
}
set_cookie_accessibility( ACCESSIBILITY_COOKIE_VALUE_ON );
}
// This function removes the accessibility css from the Head section
// and set the cookie value OFF
function accessibility_set_off() {
head = document.getElementsByTagName('head')[0];
links = head.getElementsByTagName('link');
links_to_remove = []
for (i = 0 ; i < links.length ; i++) {
link = links[i];
if (link.getAttribute('type') == 'text/css') {
for (j = 0 ; j < ACCESSIBILITY_CSS_ABSPATH.length ; j++) {
if (link.getAttribute('href').indexOf(ACCESSIBILITY_CSS_ABSPATH[j]) >= 0 ) {
links_to_remove.push(link);
}
}
}
}
for (i = 0; i < links_to_remove.length; i++) {
head.removeChild(links_to_remove[i]);
}
set_cookie_accessibility( ACCESSIBILITY_COOKIE_VALUE_OFF );
}
function accessibility_toggle () {
value = get_cookie_accessibility();
// If accessibility is ON, remove the css stylesheet
if (value == ACCESSIBILITY_COOKIE_VALUE_ON)
accessibility_set_off();
else
accessibility_set_on();
}
// The main function
function accessibility () {
value = get_cookie_accessibility();
// If accessibility is ON, add the css stylesheet
if (value == ACCESSIBILITY_COOKIE_VALUE_ON)
accessibility_set_on();
}
/*
* Title: jQuery header string replace
* Description: customize header link in order to capitalize first letter using jquery replaceWith method.
*
* Copyright (c) 2012 Ubuntu-it Ask Team - https://launchpad.net/~ubuntu-it-ask
* GNU GPL 3 LICENSE
*/
$('#header li #nav_index').replaceWith('<a id="nav_index" href="/">Home</a>');
$('#header li #nav_questions').replaceWith('<a id="nav_questions" href="/questions/">Domande</a>');
$('#header li #nav_tags').replaceWith('<a id="nav_tag" href="/tags/">Tag</a>');
$('#header li #nav_users').replaceWith('<a id="nav_users" href="/users/">Utenti</a>');
$('#header li #nav_badges').replaceWith('<a id="nav_badges" href="/badges/">Badge</a>');
$('#header li #nav_unanswered').replaceWith('<a id="nav_unanswered" href="/questions/unanswered/">Senza risposta</a>');
$('#header li #nav_ask').replaceWith('<a id="nav_ask" class="special" href="/questions/ask/">Chiedi</a>');
/*
* Title: jQuery subscriptions string replace
* Description: remove capitalization in "impostazioni" word using javascript.
*
* Copyright (c) 2012 Ubuntu-it Ask Team - https://launchpad.net/~ubuntu-it-ask
* GNU GPL 3 LICENSE
*/
var subscriptionDiv = $('#navBar a#subscriptions_settings_button');
subscriptionDiv.text('impostazioni');
java -jar yuicompressor-2.4.2.jar --type js --charset utf-8 osqa.main.js -o osqa.main.min.js
// Common variabiles
COOKIE_DOMAIN = "ubuntu-it.org";
COOKIE_PREFIX = "ubuntu-it_custom_";
COOKIE_ACCESIBILITY_NAME = "accessibility";
// Start Cookie in browser functions
function set_cookie ( name, value, expires, path, domain, secure )
{
name = COOKIE_PREFIX + name;
var cookie_string = name + "=" + escape ( value );
if ( expires ) {
cookie_string += "; expires=" + expires.toGMTString();
}
else {
var expires = new Date ( 2100, 1, 1); // never expires
cookie_string += "; expires=" + expires.toGMTString();
}
if ( path )
cookie_string += "; path=" + escape ( path );
else
cookie_string += "; path=" + escape ("/")
if ( domain )
cookie_string += "; domain=" + escape ( domain );
else
// cookie_string += "; domain=" + escape (location.host)
cookie_string += "; domain=" + escape (COOKIE_DOMAIN);
if ( secure )
cookie_string += "; secure";
document.cookie = cookie_string;
}
function delete_cookie ( cookie_name ) {
cookie_name = COOKIE_PREFIX + cookie_name;
var cookie_date = new Date ( ); // current date & time
cookie_date.setTime ( cookie_date.getTime() - 1 );
document.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString();
}
function get_cookie ( cookie_name ) {
cookie_name = COOKIE_PREFIX + cookie_name;
var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)' );
if ( results )
return ( unescape ( results[2] ) );
else
return null;
}
// End Cookie in browser functions
// Accessibility
function set_cookie_accessibility (cookie_value) {
cookie_name = COOKIE_ACCESIBILITY_NAME;
set_cookie (cookie_name, cookie_value);
}
function get_cookie_accessibility () {
cookie_name = COOKIE_ACCESIBILITY_NAME;
return get_cookie (cookie_name);
}
This diff is collapsed.
This diff is collapsed.
java -jar yuicompressor-2.4.2.jar --type js --charset utf-8 jquery.flot.js -o jquery.flot.pack.js
pause
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
jQuery.extend({
createUploadIframe: function(id, uri){
//create frame
var frameId = 'jUploadFrame' + id;
if(window.ActiveXObject) {
var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '" />');
if(typeof uri== 'boolean'){
io.src = 'javascript:false';
}
else if(typeof uri== 'string'){
io.src = uri;
}
}
else {
var io = document.createElement('iframe');
io.id = frameId;
io.name = frameId;
}
io.style.position = 'absolute';
io.style.top = '-1000px';
io.style.left = '-1000px';
document.body.appendChild(io);
return io;
},
createUploadForm: function(id, fileElementId)
{
//create form
var formId = 'jUploadForm' + id;
var fileId = 'jUploadFile' + id;
var form = $('<form action="" method="POST" name="' + formId + '" id="' + formId
+ '" enctype="multipart/form-data"></form>');
var oldElement = $('#' + fileElementId);
var newElement = $(oldElement).clone();
$(oldElement).attr('id', fileId);
$(oldElement).before(newElement);
$(oldElement).appendTo(form);
//set attributes
$(form).css('position', 'absolute');
$(form).css('top', '-1200px');
$(form).css('left', '-1200px');
$(form).appendTo('body');
return form;
},
ajaxFileUpload: function(s) {
// TODO introduce global settings, allowing the client to modify them for all requests, not only timeout
s = jQuery.extend({}, jQuery.ajaxSettings, s);
var id = new Date().getTime()
var form = jQuery.createUploadForm(id, s.fileElementId);
var io = jQuery.createUploadIframe(id, s.secureuri);
var frameId = 'jUploadFrame' + id;
var formId = 'jUploadForm' + id;
// Watch for a new set of requests
if ( s.global && ! jQuery.active++ )
{
jQuery.event.trigger( "ajaxStart" );
}
var requestDone = false;
// Create the request object
var xml = {}
if ( s.global )
jQuery.event.trigger("ajaxSend", [xml, s]);
// Wait for a response to come back
var uploadCallback = function(isTimeout)
{
var io = document.getElementById(frameId);
try {
if(io.contentWindow){
xml.responseText = io.contentWindow.document.body ?
io.contentWindow.document.body.innerText : null;
xml.responseXML = io.contentWindow.document.XMLDocument ?
io.contentWindow.document.XMLDocument : io.contentWindow.document;
}
else if(io.contentDocument)
{
xml.responseText = io.contentDocument.document.body ?
io.contentDocument.document.body.textContent || document.body.innerText : null;
xml.responseXML = io.contentDocument.document.XMLDocument ?
io.contentDocument.document.XMLDocument : io.contentDocument.document;
}
}
catch(e)
{
jQuery.handleError(s, xml, null, e);
}
if ( xml || isTimeout == "timeout")
{
requestDone = true;
var status;
try {
status = isTimeout != "timeout" ? "success" : "error";
// Make sure that the request was successful or notmodified
if ( status != "error" )
{
// process the data (runs the xml through httpData regardless of callback)
var data = jQuery.uploadHttpData( xml, s.dataType );
// If a local callback was specified, fire it and pass it the data
if ( s.success )
s.success( data, status );
// Fire the global callback
if( s.global )
jQuery.event.trigger( "ajaxSuccess", [xml, s] );
} else
jQuery.handleError(s, xml, status);
} catch(e)
{
status = "error";
jQuery.handleError(s, xml, status, e);
}
// The request was completed
if( s.global )
jQuery.event.trigger( "ajaxComplete", [xml, s] );
// Handle the global AJAX counter
if ( s.global && ! --jQuery.active )
jQuery.event.trigger( "ajaxStop" );
// Process result
if ( s.complete )
s.complete(xml, status);
jQuery(io).unbind();
setTimeout(function()
{ try
{
$(io).remove();
$(form).remove();
} catch(e) {
jQuery.handleError(s, xml, null, e);
}
}, 100)
xml = null;
}
}
// Timeout checker
if ( s.timeout > 0 ) {
setTimeout(function(){
// Check to see if the request is still happening
if( !requestDone ) uploadCallback( "timeout" );
}, s.timeout);
}
try
{
// var io = $('#' + frameId);
var form = $('#' + formId);
$(form).attr('action', s.url);
$(form).attr('method', 'POST');
$(form).attr('target', frameId);
if(form.encoding)
{
form.encoding = 'multipart/form-data';
}
else
{
form.enctype = 'multipart/form-data';
}
$(form).submit();
} catch(e)
{
jQuery.handleError(s, xml, null, e);
}
if(window.attachEvent){
document.getElementById(frameId).attachEvent('onload', uploadCallback);
}
else{
document.getElementById(frameId).addEventListener('load', uploadCallback, false);
}
return {abort: function () {}};
},
uploadHttpData: function( r, type ) {
var data = !type;
data = type == "xml" || data ? r.responseXML : r.responseText;
// If the type is "script", eval it in global context
if ( type == "script" )
jQuery.globalEval( data );
// Get the JavaScript object, if JSON is used.
if ( type == "json" )
eval( "data = " + data );
// evaluate scripts within html
if ( type == "html" )
jQuery("<div>").html(data).evalScripts();
//alert($('param', data).each(function(){alert($(this).attr('value'));}));
return data;
}
})
/*
*
* Copyright (c) 2010 C. F., Wong (<a href="http://cloudgen.w0ng.hk">Cloudgen Examplet Store</a>)
* Licensed under the MIT License:
* http://www.opensource.org/licenses/mit-license.php
*
*/
(function(k,e,i,j){k.fn.caret=function(b,l){var a,c,f=this[0],d=k.browser.msie;if(typeof b==="object"&&typeof b.start==="number"&&typeof b.end==="number"){a=b.start;c=b.end}else if(typeof b==="number"&&typeof l==="number"){a=b;c=l}else if(typeof b==="string")if((a=f.value.indexOf(b))>-1)c=a+b[e];else a=null;else if(Object.prototype.toString.call(b)==="[object RegExp]"){b=b.exec(f.value);if(b!=null){a=b.index;c=a+b[0][e]}}if(typeof a!="undefined"){if(d){d=this[0].createTextRange();d.collapse(true);
d.moveStart("character",a);d.moveEnd("character",c-a);d.select()}else{this[0].selectionStart=a;this[0].selectionEnd=c}this[0].focus();return this}else{if(d){c=document.selection;if(this[0].tagName.toLowerCase()!="textarea"){d=this.val();a=c[i]()[j]();a.moveEnd("character",d[e]);var g=a.text==""?d[e]:d.lastIndexOf(a.text);a=c[i]()[j]();a.moveStart("character",-d[e]);var h=a.text[e]}else{a=c[i]();c=a[j]();c.moveToElementText(this[0]);c.setEndPoint("EndToEnd",a);g=c.text[e]-a.text[e];h=g+a.text[e]}}else{g=
f.selectionStart;h=f.selectionEnd}a=f.value.substring(g,h);return{start:g,end:h,text:a,replace:function(m){return f.value.substring(0,g)+m+f.value.substring(h,f.value[e])}}}}})(jQuery,"length","createRange","duplicate");
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/*
* jQuery i18n plugin
* @requires jQuery v1.1 or later
*
* Examples at: http://recurser.com/articles/2008/02/21/jquery-i18n-translation-plugin/
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* Based on 'javascript i18n that almost doesn't suck' by markos
* http://markos.gaivo.net/blog/?p=100
*
* Revision: $Id$
* Version: 1.0.0 Feb-10-2008
*/
(function($) {
/**
* i18n provides a mechanism for translating strings using a jscript dictionary.
*
*/
/*
* i18n property list
*/
$.i18n = {
/**
* setDictionary()
* Initialise the dictionary and translate nodes
*
* @param property_list i18n_dict : The dictionary to use for translation
*/
setDictionary: function(i18n_dict) {
i18n_dict = i18n_dict;
},
/**
* _()
* The actual translation function. Looks the given string up in the
* dictionary and returns the translation if one exists. If a translation
* is not found, returns the original word
*
* @param string str : The string to translate
* @param property_list params : params for using printf() on the string
* @return string : Translated word
*
*/
_: function (str, params) {
var transl = str;
if (i18n_dict&& i18n_dict[str]) {
transl = i18n_dict[str];
}
return this.printf(transl, params);
},
/**
* toEntity()
* Change non-ASCII characters to entity representation
*
* @param string str : The string to transform
* @return string result : Original string with non-ASCII content converted to entities
*
*/
toEntity: function (str) {
var result = '';
for (var i=0;i<str.length; i++) {
if (str.charCodeAt(i) > 128)
result += "&#"+str.charCodeAt(i)+";";
else
result += str.charAt(i);
}
return result;
},
/**
* stripStr()
*
* @param string str : The string to strip
* @return string result : Stripped string
*
*/
stripStr: function(str) {
return str.replace(/^\s*/, "").replace(/\s*$/, "");
},
/**
* stripStrML()
*
* @param string str : The multi-line string to strip
* @return string result : Stripped string
*
*/
stripStrML: function(str) {
// Split because m flag doesn't exist before JS1.5 and we need to
// strip newlines anyway
var parts = str.split('\n');
for (var i=0; i<parts.length; i++)
parts[i] = stripStr(parts[i]);
// Don't join with empty strings, because it "concats" words
// And strip again
return stripStr(parts.join(" "));
},
/*
* printf()
* C-printf like function, which substitutes %s with parameters
* given in list. %%s is used to escape %s.
*
* Doesn't work in IE5.0 (splice)
*
* @param string S : string to perform printf on.
* @param string L : Array of arguments for printf()
*/
printf: function(S, L) {
if (!L) return S;
var nS = "";
var tS = S.split("%s");
for(var i=0; i<L.length; i++) {
if (tS[i].lastIndexOf('%') == tS[i].length-1 && i != L.length-1)
tS[i] += "s"+tS.splice(i+1,1)[0];
nS += tS[i] + L[i];
}
return nS + tS[tS.length-1];
}
};
})(jQuery);
/*
openid login boxes
*/
var providers_large = {
google: {
name: 'Google',
url: 'https://www.google.com/accounts/o8/id'
},
yahoo: {
name: 'Yahoo',
url: 'http://yahoo.com/'
},
aol: {
name: 'AOL',
label: 'Enter your AOL screenname.',
url: 'http://openid.aol.com/{username}'
},
openid: {
name: 'OpenID',
label: 'Enter your OpenID.',
url: 'http://'
}
};
var providers_small = {
myopenid: {
name: 'MyOpenID',
label: 'Enter your MyOpenID username.',
url: 'http://{username}.myopenid.com/'
},
livejournal: {
name: 'LiveJournal',
label: 'Enter your Livejournal username.',
url: 'http://{username}.livejournal.com/'
},
flickr: {
name: 'Flickr',
label: 'Enter your Flickr username.',
url: 'http://flickr.com/{username}/'
},
technorati: {
name: 'Technorati',
label: 'Enter your Technorati username.',
url: 'http://technorati.com/people/technorati/{username}/'
},
wordpress: {
name: 'Wordpress',
label: 'Enter your Wordpress.com username.',
url: 'http://{username}.wordpress.com/'
},
blogger: {
name: 'Blogger',
label: 'Your Blogger account',
url: 'http://{username}.blogspot.com/'
},
verisign: {
name: 'Verisign',
label: 'Your Verisign username',
url: 'http://{username}.pip.verisignlabs.com/'
},
verisign: {
name: 'Verisign',
label: 'Your Verisign username',
url: 'http://{username}.pip.verisignlabs.com/'
},
claimid: {
name: 'ClaimID',
label: 'Your ClaimID username',
url: 'http://claimid.com/{username}'
}
};
var providers = $.extend({}, providers_large, providers_small);
var openid = {
cookie_expires: 6*30, // 6 months.
cookie_name: 'openid_provider',
cookie_path: '/',
img_path: '/media/images/openid/',
input_id: null,
provider_url: null,
init: function(input_id) {
var openid_btns = $('#openid_btns');
this.input_id = input_id;
$('#openid_choice').show();
//$('#openid_input_area').empty();
// add box for each provider
for (id in providers_large) {
openid_btns.append(this.getBoxHTML(providers_large[id], 'large', '.gif'));
}
if (providers_small) {
openid_btns.append('<br/>');
for (id in providers_small) {
openid_btns.append(this.getBoxHTML(providers_small[id], 'small', '.png'));
}
}
var box_id = this.readCookie();
if (box_id) {
this.signin(box_id, true);
}
},
getBoxHTML: function(provider, box_size, image_ext) {
var box_id = provider["name"].toLowerCase();
return '<a title="'+provider["name"]+'" href="javascript: openid.signin(\''+ box_id +'\');"' +
' style="background: #FFF url(' + this.img_path + box_id + image_ext+') no-repeat center center" ' + 'class="' + box_id + ' openid_' + box_size + '_btn"></a>';
},
/* Provider image click */
signin: function(box_id, onload) {
var provider = providers[box_id];
if (! provider) {
return;
}
this.highlight(box_id);
this.setCookie(box_id);
$('#'+this.input_id).val(provider['url']);
var input = $('#'+this.input_id);
if(document.selection){
var r = document.all.openid_url.createTextRange();
var res = r.findText("{username}");
if(res)
r.select();
}
else {
var text = input.val();
var searchText = "{username}";
var posStart = text.indexOf(searchText);
if(posStart > -1){
input.focus();
document.getElementById(this.input_id).setSelectionRange(posStart, posStart + searchText.length);
}
}
},
highlight: function (box_id) {
// remove previous highlight.
var highlight = $('#openid_highlight');
if (highlight) {
highlight.replaceWith($('#openid_highlight a')[0]);
}
// add new highlight.
$('.'+box_id).wrap('<div id="openid_highlight"></div>');
},
setCookie: function (value) {
var date = new Date();
date.setTime(date.getTime()+(this.cookie_expires*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
document.cookie = this.cookie_name+"="+value+expires+"; path=" + this.cookie_path;
},
readCookie: function () {
var nameEQ = this.cookie_name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
};
This diff is collapsed.
/**
* Translate some string
*
**/
/* Markdonw translations */
function locate_wmd() {
if ($("#wmd-button-bar").length == 0) {
// exit if there's no wmd bar
return;
}
help_button = $("#wmd-help-button a")[0];
help_button.href = "/markdown_help/";
help_button.title = "Aiuto su sintassi Markdown";
buttons = Array()
buttons["bold"] = ["Strong", "Grassetto"]
buttons["italic"] = ["Emphasis", "Corsivo"]
buttons["link"] = ["Hyperlink", "Collegamento"]
buttons["quote"] = ["Blockquote", "Citazione"]
buttons["code"] = ["Code Sample", "Codice sorgente"]
buttons["image"] = ["Image", "Immagine"]
buttons["olist"] = ["Numbered List", "Elenco numerato"]
buttons["ulist"] = ["Bulleted List", "Elenco puntato"]
buttons["heading"] = ["Heading", "Titolo"]
buttons["hr"] = ["Horizontal Rule", "Linea orizzontale"]
buttons["undo"] = ["Undo", "Annulla"]
buttons["redo"] = ["Redo", "Ripeti"]
for (key in buttons) {
id = "#wmd-" + key + "-button"
en = buttons[key][0]
it = buttons[key][1]
button = $(id)[0]
button.title = button.title.replace(en,it)
}
}
function translate_string(id, en, it) {
if ($(id).length < 1)
return;
element = $($(id)[0])
element.html(element.html().replace(en,it))
}
$(window).load(function () {
t = translate_string
// When no related question are found
$($("#ask-related-questions")[0]).bind('DOMSubtreeModified', function () {
t("#ask-related-questions div[align=center]",
"No questions like this have been found",
"Non &egrave; stata trovata alcuna domanda simile"
)
})
locate_wmd();
})
This diff is collapsed.
var currentSideBar = 'div#title_side_bar';
function changeSideBar(enabled_bar) {
if (enabled_bar != currentSideBar) {
$(currentSideBar).hide();
currentSideBar = enabled_bar;
$(currentSideBar).fadeIn('slow');
}
}
$(function () {
$('div#editor_side_bar').hide();
$('div#tags_side_bar').hide();
$('#id_title').focus(function(){changeSideBar('div#title_side_bar')});
$('#editor').focus(function(){changeSideBar('div#editor_side_bar')});
$('#id_tags').focus(function(){changeSideBar('div#tags_side_bar')});
});
$(function() {
var $input = $('#id_title');
var $box = $('#ask-related-questions');
var template = $('#question-summary-template').html();
var $editor = $('#editor');
var results_cache = {};
function reload_suggestions_box(e) {
var relatedQuestionsDiv = $('#ask-related-questions');
var q = $input.val().replace(/^\s+|\s+$/g,"");
if(q.length == 0) {
close_suggestions_box();
relatedQuestionsDiv.html('');
return false;
} else if(relatedQuestionsDiv[0].style.height == 0 || relatedQuestionsDiv[0].style.height == '0px') {
relatedQuestionsDiv.animate({'height':'150'}, 350);
}
if (results_cache[q] && results_cache[q] != '') {
relatedQuestionsDiv.html(results_cache[q]);
return false;
}
$.post(related_questions_url, {title: q}, function(data) {
if (data) {
var c = $input.val().replace(/^\s+|\s+$/g,"");
if (c != q) {
return;
}
if(data.length == 0) {
relatedQuestionsDiv.html('<br /><br /><div align="center">Non &egrave; stata trovata alcuna domanda simile.</div>');
return;
}
var html = '';
for (var i = 0; i < data.length; i++) {
var item = template.replace(new RegExp('%URL%', 'g'), data[i].url)
.replace(new RegExp('%SCORE%', 'g'), data[i].score)
.replace(new RegExp('%TITLE%', 'g'), data[i].title)
.replace(new RegExp('%SUMMARY%', 'g'), data[i].summary);
html += item;
}
results_cache[q] = html;
relatedQuestionsDiv.html(html);
}
}, 'json');
return false;
}
function close_suggestions_box() {
$('#ask-related-questions').animate({'height':'0'},350, function() {
$('#ask-related-questions').html('');
});
}
$input.keyup(reload_suggestions_box);
$input.focus(reload_suggestions_box);
$editor.change(function() {
if ($editor.html().length > 10) {
close_suggestions_box();
}
});
// for chrome
$input.keydown(focus_on_question);
function focus_on_question(e) {
var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
if(e.keyCode == 9 && is_chrome) {
$('#editor')[0].focus();
}
}
});
This diff is collapsed.
This diff is collapsed.
$(function () {
$('div#editor_side_bar').hide();
$('#editor').focus(function(){ $('div#editor_side_bar').fadeIn('slow') });
$('#editor').blur(function(){ $('div#editor_side_bar').fadeOut('slow') });
});
Hilite={elementid:"content",exact:true,max_nodes:1000,onload:true,style_name:"hilite",style_name_suffix:true,debug_referrer:""};Hilite.search_engines=[["google\\.","q"],["search\\.yahoo\\.","p"],["search\\.msn\\.","q"],["search\\.live\\.","query"],["search\\.aol\\.","userQuery"],["ask\\.com","q"],["altavista\\.","q"],["feedster\\.","q"],["search\\.lycos\\.","q"],["alltheweb\\.","q"],["technorati\\.com/search/([^\\?/]+)",1],["dogpile\\.com/info\\.dogpl/search/web/([^\\?/]+)",1,true]];Hilite.decodeReferrer=function(d){var g=null;var e=new RegExp("");for(var c=0;c<Hilite.search_engines.length;c++){var f=Hilite.search_engines[c];e.compile("^http://(www\\.)?"+f[0],"i");var b=d.match(e);if(b){var a;if(isNaN(f[1])){a=Hilite.decodeReferrerQS(d,f[1])}else{a=b[f[1]+1]}if(a){a=decodeURIComponent(a);if(f.length>2&&f[2]){a=decodeURIComponent(a)}a=a.replace(/\'|"/g,"");a=a.split(/[\s,\+\.]+/);return a}break}}return null};Hilite.decodeReferrerQS=function(f,d){var b=f.indexOf("?");var c;if(b>=0){var a=new String(f.substring(b+1));b=0;c=0;while((b>=0)&&((c=a.indexOf("=",b))>=0)){var e,g;e=a.substring(b,c);b=a.indexOf("&",c)+1;if(e==d){if(b<=0){return a.substring(c+1)}else{return a.substring(c+1,b-1)}}else{if(b<=0){return null}}}}return null};Hilite.hiliteElement=function(f,e){if(!e||f.childNodes.length==0){return}var c=new Array();for(var b=0;b<e.length;b++){e[b]=e[b].toLowerCase();if(Hilite.exact){c.push("\\b"+e[b]+"\\b")}else{c.push(e[b])}}c=new RegExp(c.join("|"),"i");var a={};for(var b=0;b<e.length;b++){if(Hilite.style_name_suffix){a[e[b]]=Hilite.style_name+(b+1)}else{a[e[b]]=Hilite.style_name}}var d=function(m){var j=c.exec(m.data);if(j){var n=j[0];var i="";var h=m.splitText(j.index);var g=h.splitText(n.length);var l=m.ownerDocument.createElement("SPAN");m.parentNode.replaceChild(l,h);l.className=a[n.toLowerCase()];l.appendChild(h);return l}else{return m}};Hilite.walkElements(f.childNodes[0],1,d)};Hilite.hilite=function(){var a=Hilite.debug_referrer?Hilite.debug_referrer:document.referrer;var b=null;a=Hilite.decodeReferrer(a);if(a&&((Hilite.elementid&&(b=document.getElementById(Hilite.elementid)))||(b=document.body))){Hilite.hiliteElement(b,a)}};Hilite.walkElements=function(d,f,e){var a=/^(script|style|textarea)/i;var c=0;while(d&&f>0){c++;if(c>=Hilite.max_nodes){var b=function(){Hilite.walkElements(d,f,e)};setTimeout(b,50);return}if(d.nodeType==1){if(!a.test(d.tagName)&&d.childNodes.length>0){d=d.childNodes[0];f++;continue}}else{if(d.nodeType==3){d=e(d)}}if(d.nextSibling){d=d.nextSibling}else{while(f>0){d=d.parentNode;f--;if(d.nextSibling){d=d.nextSibling;break}}}}};if(Hilite.onload){if(window.attachEvent){window.attachEvent("onload",Hilite.hilite)}else{if(window.addEventListener){window.addEventListener("load",Hilite.hilite,false)}else{var __onload=window.onload;window.onload=function(){Hilite.hilite();__onload()}}}};
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(k($){$.3y.Y=k(g){g=$.4l({G:4j,w:4h,C:4f,r:[],o:0,4d:1,2K:1,32:1,2j:0,2m:0,1W:"#4c",2t:5,2C:1,1T:0,1R:0,2J:0,1N:0,2Q:1,2W:1,2X:1,2Y:"c",34:"p",2b:"n",2k:1},g);B h=$(J);B j;k 2v(){2y(J,h);u 1g}k 2y(a,b){g.r.R=0;g.o=0;m(b.R==1){g.r.2M(1s 1E(a.19("V"),a.19("T"),$(a).13("14").1h("2e")))}M{45(B i=0;i<b.R;i++){g.r.2M(1s 1E(b[i].19("V"),b[i].19("T"),$(b[i]).13("14").1h("2e")))}}44(g.r[g.o][0]!=a.19("V")){g.o++}2r()}k 2r(){$("43").z("<q 2w=\'Y\'></q><q A=\'8\'><q A=\'l\'><q A=\'1V\'><a V=\'#\'>1V</a></q><q A=\'Z\'><a V=\'#\'> 1m</a></q><q A=\'12\'><a V=\'#\'>3Y</a></q></q>");$("#Y, .8, .8 .l, .8 .l .Z, .8 .l .12").O();m(g.2W){1l()}$(".8 .12").1x().1Q("1c",k(){1S();u 1g});$(".8 .Z").1x().1Q("1c",k(){1m();u 1g});36();$("#Y").Q("3U",0.7).17(g.G/1.6,k(){y=1w();m($(P).1r()==0){m(g.w>y[0]*1.3){j=y[0]/9}M{j=y[0]/2.2}}M{j=$(P).1r()+y[0]/2.3}$(".8").Q({U:j+(g.w/2),1k:y[1]});$(".8").17(g.G/1.2,k(){$(J).1J({s:g.w,t:g.C,U:j,1k:y[1]-g.C/2},g.G/1.2,k(){1u();$(".8 .l").11(3P).17(g.G/1.5)})})});$("#Y, .8 .l .1V a").1c(k(){20();u 1g})}k 1u(){m(1F(g.r[g.o][0])){2S(g.r[g.o][0])}m(1G(g.r[g.o][0])){1H(g.r[g.o][0])}m(1I(g.r[g.o][0])){2Z(g.r[g.o][0])}m(1K(g.r[g.o][0])){33(g.r[g.o][0])}m(1L(g.r[g.o][0])){35(g.r[g.o][0])}m(1M(g.r[g.o][0])){38(g.r[g.o][0])}m(3a(g.r[g.o][0])){3b(g.r[g.o][0])}m(3c(g.r[g.o][0])){3d(g.r[g.o][0])}}k 1F(a){u(a.H("3O",".")>0||a.H("3N",".")>0||a.H("3L",".")>0)&&a.H("2c",".")<0}k 1G(a){u a.H("2d",".")>0}k 1I(a){u a.H("1i",".")>0}k 1K(a){u a.H("2c",".")>0||a.H("3H",".")>0||a.H("3F",".")>0}k 1L(a){u a.H("3B","/")>0&&a.H("3A",".")>0}k 1M(a){u g.2j!=0||a.H("1X",".")>0}k 3a(a){u g.2m!=0||a.H("#")>=0}k 3c(a){u g.1T!=0||a.H("3z",".")>0||a.H("4m",".")>0}k 2S(b){$(".8 .l").z("<q A=\'S\'><14 /></q>");$(".8 .S").O();m(g.32){$(".8").z("<q A=\'2n\'></q>")}B c=1s 2o();c.2p=k(){$(".8 .S 14").1h("W",c.W);y=1w();B a,X;m(y[0]*1.4>c.s||y[1]*1.4>c.t){g.w=a=c.s;g.C=X=c.t}M{m(!g.2K){B d=c.t-(y[1]*1.6)-1t;g.w=a=(c.s-d);g.C=X=(c.t-d)}M{m(c.s<c.t){B d=c.t-(y[1]*1.6)-1t;m(c.s>y[0]){B d=c.s-(y[0]*1.6)-1t;g.w=a=(c.s-d);g.C=X=(c.t/(c.s/(c.s-d)))}M{g.w=a=(c.s/(c.t/(c.t-d)));g.C=X=(c.t-d)}}m(c.s>c.t){B d=c.s-(y[0]*1.6)-1t;g.w=a=(c.s-d);g.C=X=(c.t/(c.s/(c.s-d)))}}}2u(a,X);$(".8 .2n").18();c.2p=k(){}};c.W=b;B e=g.r[g.o][2];B f=g.r[g.o][1];2x(f,e)}k 2x(a,b){m(a){$(".8 .l .S").z("<q A=\'16\'><2z>"+a+"</2z></q>");$(".8 .l .16").O();$(".8").2A(k(){$(".8 .l .16").1v(I,I).11(1e).2E(1e)},k(){$(".8 .l .16").1v(I,I).11(1e).2F(3x)})}m(b){$(".8 .l .16").z("<q A=\'3w\'>"+b+"</q>")}u 1g}k 1H(a){$(".8 .l").z("<q A=\'E\'></q>");1O="1P://3v.2d.1d/v/"+a.2O(31,42)+"&3n=1&3m=1&3l=3k&3j=0";$(".8 .E").z("<E t=\'"+g.C+"\' s=\'"+g.w+"\'><F K=\'1z\' L=\'"+1O+"\'></F><F K=\'3i\' L=\'I\'></F><F K=\'1A\' L=\'1B\'></F><15 W=\'"+1O+"\' 1C=\'22/x-23-24\' 1A=\'1B\' 1b=\'I\' t=\'"+g.C+"\' s=\'"+g.w+"\'></15></E>")}k 2Z(a){$(".8 .l").z("<q A=\'E\'></q>");26=a.2O(21,29);$(".8 .E").z("<E t=\'"+g.C+"\' s=\'"+g.w+"\'><F K=\'1b\' L=\'I\' /><F K=\'1A\' L=\'1B\' /><F K=\'1z\' L=\'1P://1i.1d/3g.1a?3f="+26+"&D;30=1i.1d&D;2V=1&D;2U=1&D;2T=0&D;1y=&D;2R=1\' /><15 W=\'1P://1i.1d/3g.1a?3f="+26+"&D;30=1i.1d&D;2V=1&D;2U=1&D;2T=0&D;1y=&D;2R=1\' 1C=\'22/x-23-24\' 1b=\'I\' 1A=\'1B\' t=\'"+g.C+"\' s=\'"+g.w+"\'></15></E>")}k 33(a){$(".8 .l").z("<q A=\'E\'></q>");$(\'.8 .E\').z("<E 2w=\'N\' 3o=\'3p:3q-3r-3s-3t-3u\' K=\'N\' t=\'"+g.C+"\' s=\'"+g.w+"\'> <F K=\'1z\' L=\'N/N.1a\' /><F K=\'1b\' L=\'I\' /> <F K=\'2P\' L=\'2N="+a+"&D;2L=N/2H.2G\' /> <E 1C=\'22/x-23-24\' 2l=\'N/N.1a\' t=\'"+g.C+"\' s=\'"+g.w+"\'> <F K=\'1z\' L=\'N/N.1a\' /> <F K=\'1b\' L=\'I\' /> <F K=\'2P\' L=\'2N="+a+"&D;2L=N/2H.2G\' /></E>")}k 35(a){$(".8 .l").z("<1q t="+g.C+" s="+g.w+" 2i=\'0\' 2h=\'3C\' 3D=\'0\' 3E=\'0\' W=\'"+a+"&D;2g=15\'></1q><3G /><2f><a V=\'"+a+"&D;2g=15\' 3I=\'1y:#3J;16-3K:1k\' ></2f>")}k 38(a){$(".8 .l").z("<q A=\'l\'></q>");$(".8 .l .l").Q("1U",g.1W).O();$(".8 .l .l").z("<1q 3M=\'0\' W=\'"+a+"\' 2h=\'2a\' 2i=\'0\' s=\'"+g.w+"\' t=\'"+g.C+"\' ></1q>")}k 1l(){m(g.o!=0){$(".8 .12").Q("U",g.w/2).3h()}M{$(".8 .12").O()}m(g.o!=g.r.R-1){$(".8 .Z").Q("U",g.w/2).3h()}M{$(".8 .Z").O()}1o()}k 3b(a){25();$(".8 .l .l").z($(a).1X())}k 3d(b){25();$.1T({1C:(!g.1R)?"3Q":g.1R,3R:b,2l:g.2J,3S:(!g.1N)?(k(a){$("8 .l .l").1X(a)}):g.1N})}k 25(){$(".8").Q("1U-1y","3T");$(".8 .l .28").O();B a=(g.2C)?"2a":"3V";$(".8 .l").z("<q A=\'l\'></q>");$(".8 .l .l").Q({1U:g.1W,3W:g.2t,3X:a});$(".8 .l .l").s(g.w-10)}k 36(){m(g.2X){$(P.1n).1x().1Q("3Z",k(a){m($.40.41){1Y=a.1j}M{1Y=a.1j}1p=46.47(1Y).48();m(a.1j==37||1p==g.34){1S()}m(a.1j==39||1p==g.2b){1m()}m(a.1j==27||1p==g.2Y){20()}})}}k 1S(){m(g.o!=0){$(".8 .l").1f(g.G/1.4,k(){$(".8 .l .S, .l .E").18();g.o=g.o-1;1o();1u();$(J).17(g.G/1.2);1l()})}}k 1m(){m(g.o!=g.r.R-1){$(".8 .l").1f(g.G/1.4,k(){$(".8 .l .S, .8 .l .E").18();g.o=g.o+1;1o();1u();$(J).17(g.G/1.2);1l()})}}k 1o(){m(g.2k){$(".8 .l .28").18();m(g.r.R!=0){k 3e(){m(1F(g.r[g.o][0])){u"2o "}m(1G(g.r[g.o][0])||1I(g.r[g.o][0])){u"1H "}m(1K(g.r[g.o][0])){u"49 "}m(1L(g.r[g.o][0])){u"4a "}m(1M(g.r[g.o][0])){u"4b "}}$(".8 .l").z("<q A=\'28\'>"+3e()+(g.o+1)+" / "+g.r.R+"</q>")}}}k 2u(a,b,c){B d=$(".8").s();B e=$(".8").t();$(".8").1J({1k:P.1n.2s/2-b/2,U:2D(a,b),t:b,s:a},g.G/1.5);$(".8 14").1h({s:a,t:b});$(".8 .S").O().11(g.G/1.1).17(4e);$(".8 .Z, .8 .12").Q("U",a/2)}k 2D(a,b){m(a+y[0]/2.3>y[0]*2){u $(P).1r()+(y[0]/9)}M{u $(P).1r()+(y[0]/2)}}k 20(){B a=1w();g.r.R=0;g.o=0;$(".8 .l").1f(g.G/1.6,k(){$(".8").1J({1k:a[1],U:a[0]/2+j,s:2B,t:2B},g.G/1.3,k(){$(J).1f(g.G/1.2,k(){$(J).18();$("#Y").1f(g.G/1.5,k(){$("#Y").18()})})})})}k 1w(){B a=1s 1E;a[0]=P.1n.4g/2;a[1]=P.1n.2s/2;u a}m(g.2Q){2I.4i(h,k(){B a=$(J).1h("T");m(a!=""){$(J).13("14").1Z("a").4k("<q A=\'1D\'></q>");$(J).1Z(".1D").z("<q A=\'T\'>"+a+"</q>");$(J).1Z(".1D").13(".T").O()}});$(".1D").2A(k(){$(J).13(".T").1v(I,I).11(2q).2E(1e)},k(){$(J).13(".T").1v(I,I).11(2q).2F(1e)})}u J.1x(\'1c\').1c(2v)}})(2I);',62,271,'||||||||vb_wrap||||||||||||function|content|if||arrayActEl||div|arrayEl|height|width|return||heightWindow||arraySizeBrowser|append|class|var|widthWindow|amp|object|param|Speed|indexOf|true|this|name|value|else|player|hide|document|css|length|image|title|top|href|src|Width|viewbox|next||delay|prev|children|img|embed|text|fadeIn|remove|getAttribute|swf|allowfullscreen|click|com|200|fadeOut|false|attr|vimeo|keyCode|left|NextAndPrev|Next|documentElement|NumberElement|KeyCode|iframe|scrollTop|new|65|setElement|stop|sizeBrowser|unbind|color|movie|allowscriptaccess|always|type|thumbdiv|Array|nImg|nYT|Film|nV|animate|nPlayer|nMaps|nFrame|ajaxSuccess|hrefY|http|bind|ajaxType|Prev|ajax|background|close|inlineBg|html|codeAscii|parent|closeWindow||application|shockwave|flash|ChangeStyle|hrefV||number||auto|keyNext|mp3|youtube|alt|small|output|scrolling|frameborder|frame|numberEl|data|inline|preloader|Image|onload|150|createView|clientWidth|inlinePadding|resizeWindow|_clickEl|id|Description|_viewbox|h1|hover|50|inlineScroll|topToresize|slideDown|slideUp|zip|modieus|jQuery|ajaxData|visibleIMG|skin|push|file|substring|flashvars|titleThumb|fullscreen|Img|show_portrait|show_byline|show_title|navigation|keyboard|keyClose|Vimeo|server||preloaderIMG|Player|keyPrev|GoogleMaps|keyboardNav||FrameObj||nInline|Inline|nAjax|Ajax|Words|clip_id|moogaloop|show|allowFullScreen|showsearch|related|feature|loop|autoplay|classid|clsid|D27CDB6E|AE6D|11cf|96B8|444553540000|www|description|180|fn|txt|google|map|no|marginheight|marginwidth|avi|br|vmw|style|0000FF|align|gif|hspace|png|jpg|290|GET|url|success|transparent|opacity|hidden|padding|overflow|Previous|keyup|browser|msie||body|while|for|String|fromCharCode|toLowerCase|Item|Map|Page|fff|IMG|300|650|clientHeight|450|each|400|wrap|extend|js'.split('|'),0,{}))
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment