লক্ষ্য করুন: প্রকাশ করার পর, পরিবর্তনগুলো দেখতে আপনাকে আপনার ব্রাউজারের ক্যাশে পরিষ্কার করার প্রয়োজন হতে পারে।
- ফায়ারফক্স / সাফারি: পুনরায় লোড-এ ক্লিক করার সময় শিফট টিপে ধরে রাখুন, অথবা হয় Ctrl-F5 বা Ctrl-R টিপুন (ম্যাকে ⌘-R টিপুন)
- গুগল ক্রোম: Ctrl-Shift-R (ম্যাকে ⌘-Shift-R) টিপুন
- এজ: Ctrl ধরে রাখা অবস্থায় Refresh-এ ক্লিক করুন, অথবা Ctrl-F5 টিপুন।
- অপেরা: Ctrl-F5 টিপুন।
/** Quick Edit **/ // Edit sections of a page without leaving the article // [[en:w:User:BrandonXLF/QuickEdit]] // By [[en:w:User:BrandonXLF]] // বাংলা উইকিপিডিয়ায় [[:bn:user:খাত্তাব হাসান]] কর্তৃক অনুদিত হয়েছে (function() { var mobile = mw.config.get('skin') === 'minerva', apiSingleton, titleRegexp = new RegExp( mw.config.get('wgArticlePath').replace(/[.*+?^${}()|[\]\\]/g, '\\$&').replace(/\\\$1/, '([^?]+)') + '|[?&]title=([^&#]*)' ); function api(func, params) { if (!apiSingleton) apiSingleton = new mw.Api(); $.extend(params, { errorformat: 'html', errorlang: mw.config.get('wgUserLanguage'), errorsuselocal: true }); return apiSingleton[func](params).fail(function(_, data) { mw.notify(apiSingleton.getErrorMessage(data), { type: 'error', tag: 'quickedit' }); }); } function getPageInfo(title, sectionID) { return api('get', { action: 'query', curtimestamp: 1, prop: 'revisions', indexpageids: 1, titles: title, rvprop: ['timestamp', 'content'], rvslots: 'main', rvsection: sectionID }).then(function(res) { var rev = res.query.pages[res.query.pageids[0]].revisions[0]; return { start: res.curtimestamp, base: rev.timestamp, full: rev.slots.main['*'] }; }); } function getPreviewCallback(editor) { editor.children('.preview').remove(); new OO.ui.ProgressBarWidget().$element.css({ maxWidth: '100%', borderRadius: '0', boxShadow: 'none', margin: '8px 0' }).addClass('preview').appendTo(editor); return function(html) { editor.children('.preview').remove(); $('<div>').html(html).css({ margin: '8px 0', border: '1px solid #a2a9b1', padding: '8px', overflowX: 'hidden' }).addClass('preview').appendTo(editor); }; } function showCompare(editor, title, from, to) { mw.loader.load('mediawiki.diff.styles'); api('post', { action: 'compare', fromslots: 'main', 'fromtext-main': from, fromtitle: title, frompst: 'true', toslots: 'main', 'totext-main': to, totitle: title, topst: 'true' }).then(function(r) { return r.compare['*'] ? $('<table>').addClass('diff').append( $('<colgroup>').append( $('<col>').addClass('diff-marker'), $('<col>').addClass('diff-content'), $('<col>').addClass('diff-marker'), $('<col>').addClass('diff-content') ) ).append(r.compare['*']) : 'কোনও পার্থক্য নেই।'; }).then(getPreviewCallback(editor)); } // Parts taken from EditPage::extractSectionTitle and Parser::stripSectionName function getSectionSummary(text) { var match = text.match(/^(=+)(.+)\1\s*(\n|$)/); return !match ? '' : '/* ' + match[2].trim() // Strip internal link markup .replace(/\[\[:?([^[|]+)\|([^[]+)\]\]/g, '$2') .replace(/\[\[:?([^[]+)\|?\]\]/g, '$1') // Strip external link markup .replace(new RegExp('\\[(?:' + mw.config.get('wgUrlProtocols') + ')([^ ]+?) ([^\\[]+)\\]', 'ig'), '$2') // Remove wikitext quotes .replace(/(''|'''|''''')(?!')/g, '') // Strip HTML tags .replace(/<[^>]+?>/g, '') + ' */ '; } function showEditor(el) { var progress = new OO.ui.ProgressBarWidget(), heading = el.closest(':header'), matcher = heading.nextUntil.bind(heading), inserter = heading.after.bind(heading), targetEl = el.siblings('.quickedit-target').last(), titleMatch = targetEl.attr('href').match(titleRegexp), title = decodeURIComponent(titleMatch[1] || titleMatch[2]), sectionID = /[?&]v?e?section=T?-?(\d*)/.exec(targetEl.attr('href'))[1]; if (!heading.closest('.mw-parser-output').length) { var articleContent = $('#mw-content-text .mw-parser-output'); matcher = function(selector) { var child = articleContent.children(selector).first(); if (child.length) return child.prevAll(); return articleContent.children(); }; inserter = articleContent.prepend.bind(articleContent); } inserter(progress.$element.css({ maxWidth: '100%', borderRadius: '0', boxShadow: 'none' })); el.addClass('quickedit-loading'); $('.quickedit-hide').removeClass('quickedit-hide'); $('.quickedit-heading').removeClass('quickedit-heading'); $('#quickedit-editor').remove(); getPageInfo(title, sectionID).then(function(r) { var start = r.start, base = r.base, full = r.full, saving = false, expanded = false, remainderStart = full.match(/\n=+.+=+(?:\n|$)/), part = remainderStart ? full.substring(0, remainderStart.index) : full, remainder = remainderStart ? full.substring(remainderStart.index) : '', level = 0, editor; full.replace(/^(=+).+?(=+)(?:\n|$)/, function(m, a, b) { level = Math.min(a.length, b.length); return m; }); var levelMatch = 'h1'; for (var i = 2; i <= level; i++) levelMatch += ',h' + i + ':has(*)'; var partSection = matcher(':header:has(*)'), fullSection = matcher(levelMatch), textarea = new OO.ui.MultilineTextInputWidget({ rows: 1, maxRows: 20, autosize: true, value: part }), summary = new OO.ui.TextInputWidget({ value: getSectionSummary(part) }), minor = new OO.ui.CheckboxInputWidget(), save = new OO.ui.ButtonInputWidget({ label: 'সংরক্ষণ', title: 'আপনার পরিবর্তন সংরক্ষণ করুন', flags: ['primary', 'progressive'] }), preview = new OO.ui.ButtonInputWidget({ label: 'প্রাকদর্শন', title: 'নতুন উইকিপাঠ্যের প্রাকদর্শন করুন' }), compare = new OO.ui.ButtonInputWidget({ label: 'পরিবর্তনসমূহ', title: 'বর্তমান সংস্করণ ও আপনার সংস্করণে পার্থক্য দেখুন' }), cancel = new OO.ui.ButtonInputWidget({ useInputTag: true, label: 'বাতিল', title: 'সম্পাদনা বাক্স বন্ধ করুন ও সকল পরিবর্তন বাতিল করুন', flags: ['secondary', 'destructive'] }), more = new OO.ui.ButtonInputWidget({ label: '+', title: 'পুরো অনুচ্ছেদ সম্পাদনা করুন (আভ্যন্তরীণ অনুচ্ছেদসহ)' }), buttons = new OO.ui.HorizontalLayout({ items: [save, preview, compare, cancel] }); if (part != full) { buttons.addItems([more], 3); } partSection.addClass('quickedit-hide'); heading.addClass('quickedit-heading'); el.removeClass('quickedit-loading'); progress.$element.remove(); textarea.$input.css({ borderRadius: '0' }); summary.on('enter', function() { save.emit('click'); }); save.on('click', function() { if (saving) return; var fullText = textarea.getValue() + (expanded ? '' : remainder); saving = true; save.setLabel('সংরক্ষিত হচ্ছে...'); compare.setDisabled(true); preview.setDisabled(true); cancel.setDisabled(true); more.setDisabled(true); api('postWithEditToken', { action: 'edit', title: title, section: sectionID, summary: summary.getValue(), text: fullText, minor: minor.isSelected() ? true : undefined, notminor: minor.isSelected() ? undefined : true, starttimestamp: start, basetimestamp: base }).then(function() { api('get', { action: 'parse', page: mw.config.get('wgPageName'), prop: ['text', 'categorieshtml'] }).then(function(r) { var contentText = $('#mw-content-text'), catLinks = $('#catlinks'); contentText.find('.mw-parser-output').replaceWith(r.parse.text['*']); mw.hook('wikipage.content').fire(contentText); catLinks.replaceWith(r.parse.categorieshtml['*']); mw.hook('wikipage.categories').fire(catLinks); saving = false; }); }, function(code) { if (code == 'editconflict') { showEditConflict(editor, title, sectionID, fullText).then(function(r) { start = r.start; base = r.base; textarea = r.textarea; expanded = true; }); } compare.setDisabled(false); preview.setDisabled(false); cancel.setDisabled(false); more.setDisabled(expanded); saving = false; save.setLabel('সংরক্ষণ'); }); }); preview.on('click', function() { api('post', { action: 'parse', title: title, prop: 'text', pst: 'true', disablelimitreport: 'true', disableeditsection: 'true', sectionpreview: 'true', disabletoc: 'true', text: textarea.getValue() }).then(function(r) { return r.parse.text['*'] + '<div style="clear:both;"></div>'; }).then(getPreviewCallback(editor)); }); compare.on('click', function() { showCompare(editor, title, part + (expanded ? remainder : ''), textarea.getValue()); }); cancel.on('click', function() { editor.remove(); heading.removeClass('quickedit-heading'); fullSection.removeClass('quickedit-hide'); }); more.on('click', function() { expanded = true; textarea.setValue(textarea.getValue() + remainder); fullSection.addClass('quickedit-hide'); more.setDisabled(true); }); editor = $('<div id="quickedit-editor">').css({ overflowX: 'hidden' }).append( $('<div>').css({ backgroundColor: '#eaecf0', borderBottom: '1px solid #a2a9b1', marginBottom: '8px' }).append( textarea.$element.css({ width: '100%', maxWidth: '100%', fontFamily: 'monospace, monospace' }).addClass('quickedit-textarea'), $('<div>').css({ border: '1px solid #a2a9b1', borderWidth: '0 1px' }).append( $('<div>').css({ padding: '8px 4px 8px 8px', display: 'table-cell', verticalAlign: 'middle' }).html('সম্পাদনা সারাংশ:'), summary.$element.css({ width: '100%', maxWidth: '100%', padding: '8px 0px', display: 'table-cell', verticalAlign: 'middle' }), new OO.ui.FieldLayout(minor, { label: new OO.ui.HtmlSnippet('অনুল্লেখ্য সম্পাদনা?'), align: 'inline' }).$element.css({ padding: '8px 8px 8px 4px', display: 'table-cell', verticalAlign: 'middle' }) ), buttons.$element.css({ border: '1px solid #a2a9b1', borderWidth: '0 1px', padding: '0px 8px 0' }), title !== mw.config.get('wgPageName') ? $('<div>').css({ border: '1px solid #a2a9b1', borderWidth: '0 1px', padding: '0px 8px 8px' }).append( 'সম্পাদনা করছেন: ', $('<a>').attr('href', mw.config.get('wgArticlePath').replace('$1', title)).css({ fontWeight: 'bold' }).text(title.replace(/_/g, ' ')) ) : undefined ) ); inserter(editor); }, function() { el.removeClass('quickedit-loading'); progress.$element.remove(); }); } function showEditConflict(editor, title, sectionID, text) { return getPageInfo(title, sectionID).then(function(r) { var textarea = new OO.ui.MultilineTextInputWidget({ rows: 1, maxRows: 20, autosize: true, value: r.full }), textarea2 = new OO.ui.MultilineTextInputWidget({ rows: 1, maxRows: 20, autosize: true, value: text, }); function syncSize() { textarea.styleHeight = -1; textarea.adjustSize(true); textarea2.styleHeight = -1; textarea2.adjustSize(true); var height = Math.max(textarea.$input.height(), textarea2.$input.height()); textarea.$input.height(height); textarea2.$input.height(height); } textarea.$input.css({ borderRadius: '0' }); editor.find('> :first-child > :first-child').remove(); $('<table>').css({ width: '100%', border: '1px solid #a2a9b1', borderBottom: 'none', borderSpacing: '0', margin: '0 !important' }).append( $('<tr>').append( $('<th>').css({ width: '50%', paddingTop: '4px' }).text('অন্য সংস্করণ (সংরক্ষিত হচ্ছে)'), $('<th>').css({ width: '50%', paddingTop: '4px' }).text('আপনার সংস্করণ') ), $('<tr>').append( $('<td>').css({ width: '50%', padding: '4px 4px 0 8px' }).append( textarea.$element.css({ width: '100%', maxWidth: '100%', fontFamily: 'monospace, monospace' }) ), $('<td>').css({ width: '50%', padding: '4px 8px 0 4px' }).append( textarea2.$element.css({ width: '100%', maxWidth: '100%', fontFamily: 'monospace, monospace' }) ) ) ).prependTo(editor.find('> :first-child')); textarea.on('change', syncSize); textarea2.on('change', syncSize); syncSize(); showCompare(editor, title, text, r.full); r.textarea = textarea; return r; }); } function clickHandler(e) { var el = $(e.target); if (!el.hasClass('quickedit-editlink') || el.hasClass('quickedit-loading')) return; e.preventDefault(); showEditor(el); } function addLinksToChildren(element) { element.find('#quickedit-editor, .quickedit-section').remove(); element.find('.mw-editsection').each(function() { $('[href*="section="]', this).last().after( mobile ? '' : '<span class="quickedit-section"> | </span>', $('<a>').html(mobile ? ' ত' : 'তড়িৎ সম্পাদনা').addClass('quickedit-section quickedit-editlink') ).addClass('quickedit-target'); }); } $.when(mw.loader.using('oojs-ui-core'), $.ready).done(function() { var body = $(document.body); body.on('click', clickHandler); addLinksToChildren(body); mw.hook('wikipage.content').add(addLinksToChildren); }); mw.loader.addStyleTag( '.skin-minerva .mw-editsection { white-space: nowrap; }' + '.skin-minerva .content .collapsible-heading .quickedit-section { visibility: hidden; }' + '.skin-minerva .content .collapsible-heading.open-block .quickedit-section { visibility: visible; }' + '.quickedit-hide { display: none !important; }' + '.quickedit-loading, .quickedit-heading { color: #777; }' ); })();