Exemplo n.º 1
0
    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()
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
    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
Exemplo n.º 5
0
    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
Exemplo n.º 6
0
 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')
Exemplo n.º 7
0
 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=['[', ']'])
Exemplo n.º 8
0
 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=['[', ']'])
Exemplo n.º 9
0
 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=['[', ']'])
Exemplo n.º 10
0
    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')
Exemplo n.º 11
0
    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)
Exemplo n.º 12
0
    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)
Exemplo n.º 13
0
    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)
Exemplo n.º 14
0
    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)
Exemplo n.º 15
0
    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))
Exemplo n.º 16
0
    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))