def page_open(self, title): if self.new_tab: view = sublime.active_window().new_file() view.settings().set('mediawiker_site', self.site_active) else: view = self.view is_writable = False sitecon = mw.get_connect() page = mw.get_page(sitecon, title) is_writable, text = mw.get_page_text(page) if is_writable or text: if is_writable and not text: mw.status_message('Wiki page %s is not exists. You can create new..' % (title)) text = '<!-- New wiki page: Remove this with text of the new page -->' # insert text view.run_command('mediawiker_insert_text', {'position': 0, 'text': text, 'with_erase': True}) mw.status_message('Page [[%s]] was opened successfully from "%s".' % (title, mw.get_view_site()), replace=['[', ']']) mw.set_syntax(page=page) view.settings().set('mediawiker_is_here', True) view.settings().set('mediawiker_wiki_instead_editor', mw.get_setting('mediawiker_wiki_instead_editor')) view.set_name(title) view.set_scratch(True) # own is_changed flag instead of is_dirty for possib. to reset.. view.settings().set('is_changed', False) else: sublime.message_dialog('You have not rights to view this page.') view.close()
def post_page(self, summary): summary = '%s%s' % (summary, utils.props.get_setting('summary_postfix')) mark_as_minor = utils.props.get_setting('mark_as_minor') # invert minor settings command '!' if summary and summary[0] == '!': mark_as_minor = not mark_as_minor summary = summary[1:] section = utils.props.get_view_setting(self.view, 'section', None) is_success = utils.api.save_page( page=self.page, text=self.current_text, summary=summary, mark_as_minor=mark_as_minor, section=section ) if not is_success: utils.status_message('There was an error while trying to publish page [[%s]] to wiki "%s".' % (self.title, utils.get_view_site()), replace=['[', ']']) return # update revision for page in view self.page = utils.api.get_page(self.title) utils.props.set_view_setting(self.view, 'page_revision', utils.api.page_attr(self.page, 'revision')) if utils.props.get_site_setting(utils.get_view_site(), 'show_red_links'): utils.show_red_links(self.view, self.page) self.view.set_scratch(True) utils.props.set_view_setting(self.view, 'is_changed', False) # reset is_changed flag utils.status_message('Page [[%s]] was successfully published to wiki "%s".' % (self.title, utils.get_view_site()), replace=['[', ']']) utils.save_mypages(self.title)
def run(self, edit): is_process_post = True is_skip_summary = mw.get_setting('mediawiker_skip_summary', False) self.sitecon = mw.get_connect() self.title = mw.get_title() if self.title: self.page = mw.get_page(self.sitecon, self.title) if self.page.can('edit'): if mw.get_setting('mediawiki_validate_revision_on_post', True) and self.view.settings().get('page_revision', 0) != self.page.revision: is_process_post = sublime.ok_cancel_dialog('Page was changed on server, post page anyway? If not, new revision will be opened in new tab.') if is_process_post: self.current_text = self.view.substr(sublime.Region(0, self.view.size())) if not is_skip_summary: summary_message = 'Changes summary (%s):' % mw.get_view_site() mw.set_timeout_async(self.view.window().show_input_panel(summary_message, '', self.on_done, None, None), 0) else: mw.set_timeout_async(self.on_done, 0) else: self.view.window().run_command('mediawiker_page', {'action': 'mediawiker_reopen_page', 'new_tab': True}) else: mw.status_message('You have not rights to edit this page') else: mw.status_message('Can\'t publish page with empty title') return
def run(self, edit): if mw.get_setting('offline_mode'): return is_process_post = True is_skip_summary = mw.get_setting('skip_summary', False) self.title = mw.get_title() if self.title: self.page = mw.api.get_page(self.title) if mw.api.page_can_edit(self.page): if mw.get_setting('validate_revision_on_post', True) and mw.props.get_view_setting(self.view, 'page_revision', 0) != mw.api.page_attr(self.page, 'revision'): is_process_post = sublime.ok_cancel_dialog('Page was changed on server, post page anyway? If not, new revision will be opened in new tab.') if is_process_post: self.current_text = self.view.substr(sublime.Region(0, self.view.size())) if not is_skip_summary: summary_message = 'Changes summary (%s):' % mw.get_view_site() mw.set_timeout_async(self.view.window().show_input_panel(summary_message, '', self.on_done, None, None), 0) else: mw.set_timeout_async(self.on_done, 0) else: self.view.window().run_command(mw.cmd('page'), { 'action': mw.cmd('show_page'), 'action_params': {'title': self.title, 'new_tab': True} }) else: mw.status_message('You have not rights to edit this page') else: mw.status_message('Can\'t publish page with empty title') return
def run(self, edit): if utils.props.get_setting('offline_mode'): return is_process_post = True is_skip_summary = utils.props.get_setting('skip_summary', False) self.title = utils.get_title() if self.title: self.page = utils.api.get_page(self.title) if utils.api.page_can_edit(self.page): if utils.props.get_setting('validate_revision_on_post', True) and utils.props.get_view_setting(self.view, 'page_revision', 0) != utils.api.page_attr(self.page, 'revision'): is_process_post = sublime.ok_cancel_dialog('Page was changed on server, post page anyway? If not, new revision will be opened in new tab.') if is_process_post: self.current_text = self.view.substr(sublime.Region(0, self.view.size())) if not is_skip_summary: summary_message = 'Changes summary (%s):' % utils.get_view_site() utils.set_timeout_async(self.view.window().show_input_panel(summary_message, '', self.on_done, None, None), 0) else: utils.set_timeout_async(self.on_done, 0) else: self.view.window().run_command(utils.cmd('page'), { 'action': utils.cmd('show_page'), 'action_params': {'title': self.title, 'new_tab': True} }) else: utils.status_message(utils.api.PAGE_CANNOT_EDIT_MESSAGE) else: utils.status_message('Can\'t publish page with empty title') return
def run(self, edit): self.title = utils.get_title() if self.title: self.page = utils.api.get_page(self.title) if utils.api.page_can_edit(self.page): utils.set_timeout_async(self.view.window().show_input_panel('New title', '', self.on_done_name, None, None), 0) else: utils.status_message('You have not rights to move this page')
def on_done(self, summary=None): if summary is None: summary = '' try: if mw.api.page_can_edit(self.page): self.post_page(summary=summary) else: mw.status_message(mw.api.PAGE_CANNOT_EDIT_MESSAGE) except mw.mwclient.EditError as e: mw.status_message('Can\'t publish page [[%s]] (%s)' % (self.title, e), replace=['[', ']'])
def on_done(self, summary=None): if summary is None: summary = '' try: if utils.api.page_can_edit(self.page): self.post_page(summary=summary) else: utils.status_message(utils.api.PAGE_CANNOT_EDIT_MESSAGE) except utils.mwclient.EditError as e: utils.status_message('Can\'t publish page [[%s]] (%s)' % (self.title, e), replace=['[', ']'])
def on_done(self, summary=None): if summary is None: summary = '' summary = '%s%s' % (summary, mw.get_setting('mediawiker_summary_postfix', ' (by SublimeText.Mediawiker)')) try: if self.page.can('edit'): self.post_page(summary=summary) else: mw.status_message('You have not rights to edit this page') except mw.mwclient.EditError as e: mw.status_message('Can\'t publish page [[%s]] (%s)' % (self.title, e), replace=['[', ']'])
def run(self, edit): if mw.get_setting('offline_mode'): return self.title = mw.get_title() if self.title: self.page = mw.api.get_page(self.title) if mw.api.page_can_edit(self.page): mw.set_timeout_async(self.view.window().show_input_panel('New title', '', self.on_done_name, None, None), 0) else: mw.status_message('You have not rights to move this page')
def on_done_reason(self, reason): self.reason = reason message = ''' Old name: "%s" New name: "%s" Reason: %s Leave a redirect behind? ''' % (self.title, self.new_title, self.reason) is_make_redirect = sublime.yes_no_cancel_dialog(message, 'Yes', 'No') if is_make_redirect != sublime.DIALOG_CANCEL: no_redirect = True if is_make_redirect == sublime.DIALOG_NO else False mw.api.page_move(self.page, self.new_title, self.reason, no_redirect) mw.status_message('Page [[%s]] was moved successfully to [[%s]], leave redirect: %s' % (self.title, self.new_title, not no_redirect)) if not no_redirect: mw.status_message('Refreshing old page (redirect): [[%s]]' % self.title) self.view.window().run_command(mw.cmd('reopen_page')) else: mw.status_message('Closing old page: [[%s]]' % self.title) self.view.close() mw.status_message('Opening new page: [[%s]]' % self.new_title) sublime.set_timeout( lambda: sublime.active_window().run_command(mw.cmd('page'), { 'action': mw.cmd('show_page'), 'action_params': {'title': self.new_title, 'new_tab': True} }), 2)
def on_done_reason(self, reason): self.reason = reason message = ''' Old name: "%s" New name: "%s" Reason: %s Leave a redirect behind? ''' % (self.title, self.new_title, self.reason) is_make_redirect = sublime.yes_no_cancel_dialog(message, 'Yes', 'No') if is_make_redirect != sublime.DIALOG_CANCEL: no_redirect = True if is_make_redirect == sublime.DIALOG_NO else False utils.api.page_move(self.page, self.new_title, self.reason, no_redirect) utils.status_message('Page [[%s]] was moved successfully to [[%s]], leave redirect: %s' % (self.title, self.new_title, not no_redirect)) if not no_redirect: utils.status_message('Refreshing old page (redirect): [[%s]]' % self.title) self.view.window().run_command(utils.cmd('reopen_page')) else: utils.status_message('Closing old page: [[%s]]' % self.title) self.view.close() utils.status_message('Opening new page: [[%s]]' % self.new_title) sublime.set_timeout( lambda: sublime.active_window().run_command(utils.cmd('page'), { 'action': utils.cmd('show_page'), 'action_params': {'title': self.new_title, 'new_tab': True} }), 2)
def post_page(self, summary): summary = '%s%s' % (summary, mw.get_setting('mediawiker_summary_postfix', ' (by SublimeText.Mediawiker)')) mark_as_minor = mw.get_setting('mediawiker_mark_as_minor') # invert minor settings command '!' if summary[0] == '!': mark_as_minor = not mark_as_minor summary = summary[1:] self.page.save(self.current_text, summary=summary.strip(), minor=mark_as_minor) # update revision for page in view self.page = self.sitecon.Pages[self.title] self.view.settings().set('page_revision', self.page.revision) self.view.set_scratch(True) self.view.settings().set('is_changed', False) # reset is_changed flag mw.status_message('Wiki page [[%s]] was successfully published to wiki "%s".' % (self.title, mw.get_view_site()), replace=['[', ']']) mw.save_mypages(self.title)
def post_page(self, summary): summary = '%s%s' % (summary, mw.get_setting('summary_postfix')) mark_as_minor = mw.get_setting('mark_as_minor') # invert minor settings command '!' if summary[0] == '!': mark_as_minor = not mark_as_minor summary = summary[1:] mw.api.save_page(self.page, self.current_text, summary, mark_as_minor) # update revision for page in view self.page = mw.api.get_page(self.title) mw.props.set_view_setting(self.view, 'page_revision', mw.api.page_attr(self.page, 'revision')) if mw.props.get_site_setting(mw.get_view_site(), 'show_red_links'): mw.show_red_links(self.view, self.page) self.view.set_scratch(True) mw.props.set_view_setting(self.view, 'is_changed', False) # reset is_changed flag mw.status_message('Page [[%s]] was successfully published to wiki "%s".' % (self.title, mw.get_view_site()), replace=['[', ']']) mw.save_mypages(self.title)
def page_open(self, title): self.title = title if self.new_tab: view = sublime.active_window().new_file() utils.props.set_view_setting(view, 'site', self.site_active) else: view = self.view page = utils.api.call('get_page', title=self.title) utils.props.set_view_setting(view, 'section', self.section if self.section is not None else 0) if utils.api.page_can_edit(page): # can read and edit utils.props.set_view_setting(view, 'page_revision', utils.api.page_attr(page, 'revision')) elif not utils.api.page_can_read(page): # can not read and edit sublime.message_dialog(utils.api.PAGE_CANNOT_READ_MESSAGE) view.close() return elif not sublime.ok_cancel_dialog('%s Click OK button to view its source.' % utils.api.PAGE_CANNOT_EDIT_MESSAGE): # can not edit, but can read, but not want view.close() return text = utils.api.page_get_text(page, self.section) page_namespace = utils.api.page_attr(page, 'namespace') if not text: utils.status_message('Page [[%s]] is not exists. You can create new..' % (self.title)) text = '<!-- New wiki page: Remove this with text of the new page -->' view.run_command(utils.cmd('insert_text'), {'position': 0, 'text': text, 'with_erase': True}) if utils.props.get_site_setting(self.site_active, 'show_red_links'): utils.show_red_links(view, page) utils.status_message('Page [[%s]] was opened successfully from "%s".' % (self.title, utils.get_view_site()), replace=['[', ']']) utils.set_syntax(self.title, page_namespace) utils.props.set_view_setting(view, 'is_here', True) utils.props.set_view_setting(view, 'wiki_instead_editor', utils.props.get_setting('wiki_instead_editor')) view.set_name(self.title) view.set_scratch(True) # own is_changed flag instead of is_dirty for possib. to reset.. utils.props.set_view_setting(view, 'is_changed', False) try: self.get_notifications() except Exception as e: utils.status_message('%s notifications exception: %s' % (p.PM, e))
def page_open(self, title): if self.new_tab: view = sublime.active_window().new_file() mw.props.set_view_setting(view, 'site', self.site_active) else: view = self.view page = mw.api.call('get_page', title=title) if mw.api.page_can_edit(page): # can read and edit mw.props.set_view_setting(view, 'page_revision', mw.api.page_attr(page, 'revision')) elif not mw.api.page_can_read(page): # can not read and edit sublime.message_dialog(mw.api.PAGE_CANNOT_READ_MESSAGE) view.close() return elif not sublime.ok_cancel_dialog('%s Click OK button to view its source.' % mw.api.PAGE_CANNOT_EDIT_MESSAGE): # can not edit, but can read, but not want view.close() return text = mw.api.page_get_text(page) page_namespace = mw.api.page_attr(page, 'namespace') if not text: mw.status_message('Page [[%s]] is not exists. You can create new..' % (title)) text = '<!-- New wiki page: Remove this with text of the new page -->' view.run_command(mw.cmd('insert_text'), {'position': 0, 'text': text, 'with_erase': True}) if mw.props.get_site_setting(self.site_active, 'show_red_links'): mw.show_red_links(view, page) mw.status_message('Page [[%s]] was opened successfully from "%s".' % (title, mw.get_view_site()), replace=['[', ']']) mw.set_syntax(title, page_namespace) mw.props.set_view_setting(view, 'is_here', True) mw.props.set_view_setting(view, 'wiki_instead_editor', mw.get_setting('wiki_instead_editor')) view.set_name(title) view.set_scratch(True) # own is_changed flag instead of is_dirty for possib. to reset.. mw.props.set_view_setting(view, 'is_changed', False) try: self.get_notifications() except Exception as e: mw.status_message('%s notifications exception: %s' % (mw.PM, e))