phapublisher.cpp
No OneTemporary

File Metadata

Created
Mon, Jul 6, 11:26 PM

phapublisher.cpp

//TEST check publishing with intermdeiate non existent categories
#include "phapublisher.h"
#include "phrictionclient.h"
#include "ui_publishersettings.h"
#include "PluginSettings.h"
#include <QMessageBox>
#include <QFileInfo>
class UiSettings : public QWidget, public Ui::Form{};
void
PhaPublisher::publishCurrentPage(){
Juff::Document* doc = api()->currentDocument();
QString filename = doc->fileName();
if (!filename.startsWith(cfgRoot)){
QMessageBox::critical(doc, "Phabricator Publisher", "Current document located not in scope of a project", QMessageBox::Ok);
}
QFileInfo finfo(filename);
QString slug;
if (finfo.baseName()=="index"){
slug = filename.mid(cfgRoot.length(), filename.length()-cfgRoot.length()-finfo.fileName().length()-1);
} else {
slug = filename.mid(cfgRoot.length(), filename.length()-cfgRoot.length()-finfo.completeSuffix().length()-1);
}
QString title = finfo.baseName();
QString content;
doc->getText(content);
if (transport->publishDocument(slug, title, content, "")){
QMessageBox::information(nullptr, "Phabricator publisher", "Page published successfully");
}
}
PhaPublisher::PhaPublisher() : QObject(), JuffPlugin()
,uiSettings(new UiSettings()), transport(0)
{
cfgUrl = PluginSettings::getString(this, "url", "http://localhost/");
cfgUser = PluginSettings::getString(this, "user", "pgess");
cfgCertificate = PluginSettings::getString(this, "certificate", "");
cfgToken = PluginSettings::getString(this, "token", "");
cfgRoot = PluginSettings::getString(this, "root", "~");
uiSettings->setupUi(uiSettings);
uiSettings->uiUrl->setText(cfgUrl);
uiSettings->uiUser->setText(cfgUser);
uiSettings->uiSertificate->setPlainText(cfgCertificate);
uiSettings->uiToken->setText(cfgToken);
uiSettings->uiRoot->setText(cfgRoot);
}
QWidget*
PhaPublisher::settingsPage() const{
return uiSettings;
}
void PhaPublisher::applySettings(){
if (!uiSettings) return;
cfgUrl = uiSettings->uiUrl->text();
cfgUser = uiSettings->uiUser->text();
cfgCertificate = uiSettings->uiSertificate->toPlainText();
cfgToken = uiSettings->uiToken->text();
cfgRoot = uiSettings->uiRoot->text();
PluginSettings::set(this, "url", cfgUrl);
PluginSettings::set(this, "user", cfgUser);
PluginSettings::set(this, "certificate", cfgCertificate);
PluginSettings::set(this, "token", cfgToken);
PluginSettings::set(this, "root", cfgRoot);
delete transport;
transport = new PhrictionClient(cfgUrl, cfgUser, cfgToken, cfgCertificate);
}
void
PhaPublisher::init(){
//transport = new PhrictionClient();
}
QAction* createAction(const QString& title, const QKeySequence& key, const QObject* this_, const char* slot) {
QAction* act = new QAction(title, 0);
this_->connect(act, SIGNAL(triggered()), this_, slot);
act->setShortcut(key);
return act;
}
// info
QString PhaPublisher::name()const {return "publisher";}
QString PhaPublisher::title() const {return "Phabricator publisher";}
QString PhaPublisher::description() const {return "Phabricator publisher";}
QString PhaPublisher::targetEngine() const{ return "all";}
Juff::ActionList
PhaPublisher::mainMenuActions(Juff::MenuID id) const {
Juff::ActionList list;
if ( id == Juff::MenuEdit ) {
list << createAction(tr("publish"), QKeySequence("Ctrl+Shift+B"), this, SLOT(publishCurrentPage()));
}
return list;
}
PhaPublisher::~PhaPublisher(){
delete transport;
//delete uiSettings;
uiSettings->deleteLater();
}

Event Timeline