Page MenuHomePhabricator

VisualEditor open incorrect transclusion dialog
Closed, ResolvedPublic

Description

Sometime VE open transclusion dialog combining multiple templates and content unexpectedly making it impossible to edit content without wiki syntax.
This is visible in this link when editing the 3rd paragraph in the 2nd header.

For the following wikitext:

[[צה"ל]] טען מנגד כי מנגנוני התיאום בין צה"ל ל[[הכוחות המזוינים של הפדרציה הרוסית|צבא רוסיה]] פעלו היטב וכי האשמה על הפלת המטוס מונחת לפתחה של סוריה, שביצעה יירוט ללא הבחנה באיחור, כאשר המטוסים הישראליים כבר חזרו לשטח ישראל.{{הערה|{{וואלה!|אמיר בוחבוט|צה"ל: סוריה אחראית להפלת המטוס הרוסי; מביעים צער על מות אנשי הצוות|3188353|18 בספטמבר 2018}},{{ש}}{{ynet|יואב זיתון ואיתמר אייכנר|צה"ל: מצטערים שנהרגו רוסים, הסורים אשמים. פוטין: שרשרת טעויות|5353648|18 בספטמבר 2018}}.}} בתגובה הרשמית מסר [[דובר צה"ל]]: {{ציטוטון|ישראל מביעה צער על מותם של אנשי צוות המטוס הרוסי שהופל הלילה כתוצאה מפגיעת אש נ"מ סורית, מטילה את האחריות המלאה לאירוע על משטר אסד שצבאו הפיל את המטוס הרוסי ורואה גם באיראן ובארגון חזבאללה שותפות באחריות לאירוע מצער זה}}.{{הערה|שם=צהל1}} צה"ל גם פרסם את מסקנותיו של [[תחקיר מבצעי|תחקיר]] ראשוני שבו נכתב: {{ציטוט|תוכן=בין צה"ל לצבא הרוסי פועל מנגנון מניעת חיכוך שסוכם בין מנהיגי המדינות והוכיח עצמו מספר רב של פעמים בשנים האחרונות. מנגנון זה פעל גם הלילה.
* ירי נ"מ ( טק"א) סורי נרחב ולא מדויק הביא לפגיעה במטוס הרוסי ולנפילתו.
* כאשר צבא סוריה שיגר את הטילים שפגעו במטוס הרוסי, מטוסי חיל האוויר כבר היו בשטח ישראל.
* בזמן שבוצעה התקיפה נגד היעד בלטקיה, המטוס הרוסי שנפגע לא היה במרחב הפעולה.
* סוללות הנ"מ הסוריות ירו ללא הבחנה ולהבנתנו לא טרחו לוודא שאין מטוסים רוסיים באוויר.
ישראל תעביר לממשלת רוסיה את כל המידע הנחוץ לבירור האירוע ולאישוש העובדות שעלו בתחקיר זה.{{הערה|שם=צהל1}}}}

It should be possible to edit the first sentence WITHOUT opening a dialog, where the first sentence is:

[[צה"ל]] טען מנגד כי מנגנוני התיאום בין צה"ל ל[[הכוחות המזוינים של הפדרציה הרוסית|צבא רוסיה]] פעלו היטב וכי האשמה על הפלת המטוס מונחת לפתחה של סוריה, שביצעה יירוט ללא הבחנה באיחור, כאשר המטוסים הישראליים כבר חזרו לשטח ישראל.

And suppose someone who doesn't know wikitext wants to replace the first link to something else (e.g using VE)

This looks like an issue with the Parsoid generating mwTransclusionNode for text probably because of a blockquote element

Event Timeline

Parsoid markup for this paragraph (from https://he.wikipedia.org/api/rest_v1/page/html/מתקפת_הטילים_בלטקיה_(ספטמבר_2018)/23882409):

<p about="#mwt20" typeof="mw:Transclusion" data-mw='…' id="mwRQ"><a rel="mw:WikiLink" href='./צה"ל' title='צה"ל' class="mw-redirect">צה"ל</a> טען מנגד כי מנגנוני התיאום בין צה"ל ל<a rel="mw:WikiLink" href="./הכוחות_המזוינים_של_הפדרציה_הרוסית" title="הכוחות המזוינים של הפדרציה הרוסית">צבא רוסיה</a> פעלו היטב וכי האשמה על הפלת המטוס מונחת לפתחה של סוריה, שביצעה יירוט ללא הבחנה באיחור, כאשר המטוסים הישראליים כבר חזרו לשטח ישראל.<sup about="#mwt88" class="mw-ref" id="cite_ref-12" rel="dc:references" typeof="mw:Extension/ref" data-mw='…'><a href="./מתקפת_הטילים_בלטקיה_(ספטמבר_2018)#cite_note-12" style="counter-reset: mw-Ref 12;"><span class="mw-reflink-text">[12]</span></a></sup> בתגובה הרשמית מסר <a rel="mw:WikiLink" href='./דובר_צה"ל' title='דובר צה"ל'>דובר צה"ל</a>: <span class="hebrewQuotation">"ישראל מביעה צער על מותם של אנשי צוות המטוס הרוסי שהופל הלילה כתוצאה מפגיעת אש נ"מ סורית, מטילה את האחריות המלאה לאירוע על משטר אסד שצבאו הפיל את המטוס הרוסי ורואה גם באיראן ובארגון חזבאללה שותפות באחריות לאירוע מצער זה"</span>.<sup about="#mwt64" class="mw-ref" id="cite_ref-צהל1_5-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='…'><a href="./מתקפת_הטילים_בלטקיה_(ספטמבר_2018)#cite_note-צהל1-5" style="counter-reset: mw-Ref 5;"><span class="mw-reflink-text">[5]</span></a></sup> צה"ל גם פרסם את מסקנותיו של <a rel="mw:WikiLink" href="./תחקיר_מבצעי" title="תחקיר מבצעי" class="mw-redirect">תחקיר</a> ראשוני שבו נכתב: <style data-mw-deduplicate="TemplateStyles:r23890943" typeof="mw:Extension/templatestyles" about="#mwt105" data-mw='…'>.mw-parser-output .HeQuotationMark p:first-child::before{color:#99f;content:"”";font-family:serif;font-size:25px;font-weight:bold;line-height:100%}.mw-parser-output .HeQuotationMark p:last-child:after{color:#99f;content:"“";font-family:serif;font-size:25px;font-weight:bold;line-height:100%}.mw-parser-output .EnQuotationMark p:first-child::before{color:#99f;content:"“";font-family:serif;font-size:25px;font-weight:bold;line-height:100%}.mw-parser-output .EnQuotationMark p:last-child:after{color:#99f;content:"”";font-family:serif;font-size:25px;font-weight:bold;line-height:100%}</style><span about="#mwt105">
</span></p><blockquote dir="rtl" about="#mwt20" id="mwRg"><div class="hebrewQuotation ">
<p>בין צה"ל לצבא הרוסי פועל מנגנון מניעת חיכוך שסוכם בין מנהיגי המדינות והוכיח עצמו מספר רב של פעמים בשנים האחרונות. מנגנון זה פעל גם הלילה.</p>
<ul><li>ירי נ"מ ( טק"א) סורי נרחב ולא מדויק הביא לפגיעה במטוס הרוסי ולנפילתו.</li>
<li>כאשר צבא סוריה שיגר את הטילים שפגעו במטוס הרוסי, מטוסי חיל האוויר כבר היו בשטח ישראל.</li>
<li>בזמן שבוצעה התקיפה נגד היעד בלטקיה, המטוס הרוסי שנפגע לא היה במרחב הפעולה.</li>
<li>סוללות הנ"מ הסוריות ירו ללא הבחנה ולהבנתנו לא טרחו לוודא שאין מטוסים רוסיים באוויר.</li></ul>
<p>ישראל תעביר לממשלת רוסיה את כל המידע הנחוץ לבירור האירוע ולאישוש העובדות שעלו בתחקיר זה.<sup about="#mwt93" class="mw-ref" id="cite_ref-צהל1_5-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='…'><a href="./מתקפת_הטילים_בלטקיה_(ספטמבר_2018)#cite_note-צהל1-5" style="counter-reset: mw-Ref 5;"><span class="mw-reflink-text">[5]</span></a></sup></p>
</div>

</blockquote>

Looks like it decides that the TemplateStyles output (and… some weird empty <span> tag?) is at the end of the previous paragraph (inside it) rather than after that paragraph (outside it), which forces the entire paragraph to be marked as template-generated.

@eranroz I suspect you can work around this issue by just putting two newlines before the template {{ציטוט|…}}. I'm not sure if Parsoid can do anything here.

The Parsoid change seems to have fixed this issue.