<table><tr><td style="">martinkostolny created this revision.<br />martinkostolny added a project: KTextEditor.<br />Restricted Application added subscribers: Frameworks, kwrite-devel.<br />Restricted Application added a project: Frameworks.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D4847" rel="noreferrer">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p>Before this patch: if one opens a write protected document, makes changes and then wants to save, error message occurs about insufficient privileges or disk space.</p>

<p>With this patch kate-part will try to save the document contents with elevated privileges in case the regular save failed. So that KAuth graphical prompt is presented to user. I believe this was suggested by many KDE users as a wanted feature. Please let me know if this isn't the right approach.</p>

<p>I'm in fact quite new to KTextEditor as well as KAuth so feel free to criticize the code. I'll try to fix everything you point at :).</p>

<p>What I basically did:</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">created TextBufferSecure class (for dedicated KAuth helper binary)</li>
<li class="remarkup-list-item">moved most contents of TextBuffer:save() method to this new class' saveInternal() method</li>
<li class="remarkup-list-item">TextBuffer:save() method now first tries to save with TextBufferSecure::saveInternal() helper method</li>
<li class="remarkup-list-item">if that fails it will call it again through KAuth action</li>
</ul></div></div><br /><div><strong>TEST PLAN</strong><div><ul class="remarkup-list">
<li class="remarkup-list-item">editing & saving document in home page</li>
<li class="remarkup-list-item">editing & saving /etc/hosts</li>
<li class="remarkup-list-item">tried with Krusader's "internal viewer" which uses ReadWritePart + tried with Kate</li>
</ul>

<p>But I'm sure there are a lot of other use-cases I didn't think of. Maybe you think of somehting. On my mind is now saving documents with different encoding, eol type, saving huge documents. I'll do that and if problems occur, I'll fix the diff.</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R39 KTextEditor</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D4847" rel="noreferrer">https://phabricator.kde.org/D4847</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>src/CMakeLists.txt<br />
src/buffer/katetextbuffer.cpp<br />
src/buffer/katetextbuffer_secure.cpp<br />
src/buffer/katetextbuffer_secure.h<br />
src/buffer/org.kde.ktexteditor.katetextbuffer.actions</div></div></div><br /><div><strong>EMAIL PREFERENCES</strong><div><a href="https://phabricator.kde.org/settings/panel/emailpreferences/" rel="noreferrer">https://phabricator.kde.org/settings/panel/emailpreferences/</a></div></div><br /><div><strong>To: </strong>martinkostolny, KTextEditor<br /><strong>Cc: </strong>kwrite-devel, Frameworks, head7, cullmann, kfunk, sars, dhaumann<br /></div>