Utilizator:Strainu/ve.js
Notă: După salvare, trebuie să treceți peste cache-ul browser-ului pentru a vedea modificările.
- Mozilla, Google Chrome, Safari, Konqueror: țineți apăsat Shift în timp ce apăsați butonul Reload (sau apăsați Ctrl-Shift-R).
- Internet Explorer: apăsați Ctrl-F5.
- Opera: apăsați F5.
mw.hook('ve.toolbarSaveButton.stateChanged').add(function () {
replaceAllTextDiacritics();
});
function replaceAllTextDiacritics() {
replaceLetter("ş", "ș");
replaceLetter("Ş", "Ș");
replaceLetter("ţ", "ț");
replaceLetter("Ţ", "Ț");
}
function replaceLetter(old, replace) {
var surfaceModel = ve.init.target.getSurface().getModel();
var documentModel = surfaceModel.getDocument();
var query = new RegExp(old, "g");
var fragments = [];
var ranges = documentModel.findText(query, true, true);
var i, l;
for (i = 0, l = ranges.length; i < l; i++) {
fragment = surfaceModel.getLinearFragment(ranges[i], true, true);
annotations = fragment.getAnnotations(true);
if (annotations.getLength() > 0)
annotations = annotations.getAnnotationsByName('meta/language');
if (annotations.getLength() === 0)
fragments.push(fragment);
}
for (i = 0, l = fragments.length; i < l; i++) {
replaceOne(fragments[i], query, replace);
}
}
function replaceOne(fragment, query, replace) {
if (query instanceof RegExp) {
fragment.insertContent(
fragment.getText().replace(query, replace),
true);
} else {
fragment.insertContent(replace, true);
}
}
//TODO: in order to replace the template elements, I need to find a relevant hook and call the following:
// $('.ve-ui-mwParameterPage-field > .oo-ui-textInputWidget > textarea')[i].val(sanitizeWikitext($('.ve-ui-mwParameterPage-field > .oo-ui-textInputWidget > textarea')[i].val()))
//TODO: skip sensitive templates
//TODO: galleries - the editor is similar to templates, so we can just ignore it for now; wa are at feature-parity with the normal editor