mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-05-19 06:32:34 +02:00
2024-02-07 Fred Gleason <fredg@paravelsystems.com>
* Added the option to provision users from an existing RSS feed to the 'Add RSS Feed' dialog in rdadmin(1). Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
parent
c0a8e1e692
commit
ae5d20cbe9
@ -24642,3 +24642,6 @@
|
||||
* Fixed a regression in rdlogmanager(1) that caused clock titles
|
||||
to fail to be centered in the pie wedge display in the
|
||||
'Edit Clock' dialog.
|
||||
2024-02-07 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Added the option to provision users from an existing RSS feed
|
||||
to the 'Add RSS Feed' dialog in rdadmin(1).
|
||||
|
@ -2,7 +2,7 @@
|
||||
//
|
||||
// Add a Rivendell RSS Feed
|
||||
//
|
||||
// (C) Copyright 2002-2021 Fred Gleason <fredg@paravelsystems.com>
|
||||
// (C) Copyright 2002-2024 Fred Gleason <fredg@paravelsystems.com>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License version 2 as
|
||||
@ -29,17 +29,19 @@
|
||||
#include "edit_feed.h"
|
||||
#include "globals.h"
|
||||
|
||||
AddFeed::AddFeed(unsigned *id,QString *keyname,QWidget *parent)
|
||||
AddFeed::AddFeed(unsigned *id,QString *keyname,QStringList *usernames,
|
||||
QWidget *parent)
|
||||
: RDDialog(parent)
|
||||
{
|
||||
feed_keyname=keyname;
|
||||
feed_id=id;
|
||||
feed_usernames=usernames;
|
||||
|
||||
//
|
||||
// Fix the Window Size
|
||||
//
|
||||
setMinimumSize(sizeHint());
|
||||
setMaximumSize(sizeHint());
|
||||
setMaximumHeight(sizeHint().height());
|
||||
|
||||
setWindowTitle("RDADmin - "+tr("Add RSS Feed"));
|
||||
|
||||
@ -62,13 +64,33 @@ AddFeed::AddFeed(unsigned *id,QString *keyname,QWidget *parent)
|
||||
feed_keyname_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
|
||||
|
||||
//
|
||||
// Enable Users Checkbox
|
||||
// Enable User Selector
|
||||
//
|
||||
feed_users_box=new QCheckBox(this);
|
||||
feed_users_box->setChecked(true);
|
||||
feed_users_label=
|
||||
new QLabel(tr("Enable Feed for All Users"),this);
|
||||
feed_users_label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
|
||||
feed_usernames_groupbox=new QGroupBox(tr("Enable Users For Feed"),this);
|
||||
|
||||
feed_usernames_group=new QButtonGroup(this);
|
||||
connect(feed_usernames_group,SIGNAL(buttonToggled(QAbstractButton *,bool)),
|
||||
this,SLOT(buttonToggledData(QAbstractButton *,bool)));
|
||||
|
||||
feed_none_radio=
|
||||
new QRadioButton(tr("No Users"),this);
|
||||
feed_usernames_group->addButton(feed_none_radio);
|
||||
|
||||
feed_all_radio=
|
||||
new QRadioButton(tr("All Users"),this);
|
||||
feed_usernames_group->addButton(feed_all_radio);
|
||||
|
||||
feed_some_radio=
|
||||
new QRadioButton(tr("Users from Feed")+":",this);
|
||||
feed_usernames_group->addButton(feed_some_radio);
|
||||
feed_keyname_box=new QComboBox(this);
|
||||
feed_keyname_model=new RDFeedListModel(true,false,this);
|
||||
feed_keyname_model->setPalette(palette());
|
||||
feed_keyname_model->setFont(font());
|
||||
feed_keyname_box->setModel(feed_keyname_model);
|
||||
feed_some_radio->setDisabled(feed_keyname_model->rowCount()==0);
|
||||
feed_none_radio->setChecked(true);
|
||||
buttonToggledData(feed_usernames_group->checkedButton(),true);
|
||||
|
||||
//
|
||||
// Ok Button
|
||||
@ -98,7 +120,7 @@ AddFeed::~AddFeed()
|
||||
|
||||
QSize AddFeed::sizeHint() const
|
||||
{
|
||||
return QSize(290,123);
|
||||
return QSize(310,205);
|
||||
}
|
||||
|
||||
|
||||
@ -114,14 +136,43 @@ void AddFeed::keynameChangedData(const QString &str)
|
||||
}
|
||||
|
||||
|
||||
void AddFeed::buttonToggledData(QAbstractButton *rbutton,bool checked)
|
||||
{
|
||||
feed_keyname_box->setEnabled((rbutton==feed_some_radio)&&checked);
|
||||
}
|
||||
|
||||
|
||||
void AddFeed::okData()
|
||||
{
|
||||
QString err_msg;
|
||||
QString sql;
|
||||
RDSqlQuery *q=NULL;
|
||||
|
||||
*feed_id=RDFeed::create(feed_keyname_edit->text(),feed_users_box->isChecked(),
|
||||
&err_msg);
|
||||
*feed_id=RDFeed::create(feed_keyname_edit->text(),false,&err_msg);
|
||||
if(*feed_id!=0) {
|
||||
*feed_keyname=feed_keyname_edit->text();
|
||||
if(feed_usernames_group->checkedButton()==feed_all_radio) {
|
||||
sql=QString("select ")+
|
||||
"`LOGIN_NAME` "+ // 00
|
||||
"from `USERS` where "+
|
||||
"(`ADMIN_CONFIG_PRIV`='N')&&(ADMIN_RSS_PRIV='N')";
|
||||
q=new RDSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
AuthorizeUser(*feed_keyname,q->value(0).toString());
|
||||
}
|
||||
delete q;
|
||||
}
|
||||
if(feed_usernames_group->checkedButton()==feed_some_radio) {
|
||||
sql=QString("select ")+
|
||||
"`USER_NAME` "+ // 00
|
||||
"from `FEED_PERMS` where "+
|
||||
"`KEY_NAME`='"+RDEscapeString(feed_keyname_box->currentText())+"'";
|
||||
q=new RDSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
AuthorizeUser(*feed_keyname,q->value(0).toString());
|
||||
}
|
||||
delete q;
|
||||
}
|
||||
done(true);
|
||||
}
|
||||
else {
|
||||
@ -139,11 +190,24 @@ void AddFeed::cancelData()
|
||||
void AddFeed::resizeEvent(QResizeEvent *e)
|
||||
{
|
||||
feed_keyname_label->setGeometry(10,11,120,19);
|
||||
feed_keyname_edit->setGeometry(135,11,sizeHint().width()-140,19);
|
||||
|
||||
feed_users_box->setGeometry(40,35,15,15);
|
||||
feed_users_label->setGeometry(60,33,sizeHint().width()-60,19);
|
||||
feed_keyname_edit->setGeometry(135,11,sizeHint().width()-145,19);
|
||||
|
||||
feed_usernames_groupbox->setGeometry(10,35,size().width()-20,97);
|
||||
feed_none_radio->setGeometry(30,45,160,30);
|
||||
feed_all_radio->setGeometry(30,70,160,30);
|
||||
feed_some_radio->setGeometry(30,95,160,30);
|
||||
feed_keyname_box->setGeometry(150,95,size().width()-170,30);
|
||||
|
||||
feed_ok_button->setGeometry(size().width()-180,size().height()-60,80,50);
|
||||
feed_cancel_button->setGeometry(size().width()-90,size().height()-60,80,50);
|
||||
}
|
||||
|
||||
|
||||
void AddFeed::AuthorizeUser(const QString &keyname,
|
||||
const QString &login_name) const
|
||||
{
|
||||
QString sql=QString("insert into `FEED_PERMS` set ")+
|
||||
"`KEY_NAME`='"+RDEscapeString(keyname)+"',"+
|
||||
"`USER_NAME`='"+RDEscapeString(login_name)+"'";
|
||||
RDSqlQuery::apply(sql);
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
//
|
||||
// Add a Rivendell Feed
|
||||
//
|
||||
// (C) Copyright 2002-2020 Fred Gleason <fredg@paravelsystems.com>
|
||||
// (C) Copyright 2002-2024 Fred Gleason <fredg@paravelsystems.com>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License version 2 as
|
||||
@ -21,40 +21,53 @@
|
||||
#ifndef ADD_FEED_H
|
||||
#define ADD_FEED_H
|
||||
|
||||
#include <qcheckbox.h>
|
||||
#include <qcombobox.h>
|
||||
#include <qlineedit.h>
|
||||
#include <qlabel.h>
|
||||
#include <qpushbutton.h>
|
||||
#include <QButtonGroup>
|
||||
#include <QCheckBox>
|
||||
#include <QComboBox>
|
||||
#include <QGroupBox>
|
||||
#include <QLineEdit>
|
||||
#include <QLabel>
|
||||
#include <QPushButton>
|
||||
#include <QRadioButton>
|
||||
#include <QStringList>
|
||||
|
||||
#include <rddialog.h>
|
||||
#include <rdfeedlistmodel.h>
|
||||
|
||||
class AddFeed : public RDDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
AddFeed(unsigned *id,QString *keyname,QWidget *parent=0);
|
||||
AddFeed(unsigned *id,QString *keyname,QStringList *usernames,QWidget *parent);
|
||||
~AddFeed();
|
||||
QSize sizeHint() const;
|
||||
QSizePolicy sizePolicy() const;
|
||||
|
||||
private slots:
|
||||
void keynameChangedData(const QString &str);
|
||||
void buttonToggledData(QAbstractButton *rbutton,bool checked);
|
||||
void okData();
|
||||
void cancelData();
|
||||
|
||||
protected:
|
||||
void resizeEvent(QResizeEvent *e);
|
||||
|
||||
private:
|
||||
QLabel *feed_keyname_label;
|
||||
QLineEdit *feed_keyname_edit;
|
||||
QCheckBox *feed_users_box;
|
||||
QLabel *feed_users_label;
|
||||
QPushButton *feed_ok_button;
|
||||
QPushButton *feed_cancel_button;
|
||||
QString *feed_keyname;
|
||||
unsigned *feed_id;
|
||||
private:
|
||||
void AuthorizeUser(const QString &keyname,const QString &login_name) const;
|
||||
QLabel *feed_keyname_label;
|
||||
QLineEdit *feed_keyname_edit;
|
||||
QGroupBox *feed_usernames_groupbox;
|
||||
QButtonGroup *feed_usernames_group;
|
||||
QRadioButton *feed_none_radio;
|
||||
QRadioButton *feed_all_radio;
|
||||
QRadioButton *feed_some_radio;
|
||||
QComboBox *feed_keyname_box;
|
||||
RDFeedListModel *feed_keyname_model;
|
||||
QPushButton *feed_ok_button;
|
||||
QPushButton *feed_cancel_button;
|
||||
QString *feed_keyname;
|
||||
unsigned *feed_id;
|
||||
QStringList *feed_usernames;
|
||||
};
|
||||
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
//
|
||||
// List Rivendell Feeds
|
||||
//
|
||||
// (C) Copyright 2002-2023 Fred Gleason <fredg@paravelsystems.com>
|
||||
// (C) Copyright 2002-2024 Fred Gleason <fredg@paravelsystems.com>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License version 2 as
|
||||
@ -144,9 +144,10 @@ void ListFeeds::addData()
|
||||
{
|
||||
QString feed;
|
||||
unsigned id;
|
||||
QStringList usernames;
|
||||
QString sql;
|
||||
|
||||
AddFeed *ad=new AddFeed(&id,&feed,this);
|
||||
AddFeed *ad=new AddFeed(&id,&feed,&usernames,this);
|
||||
if(ad->exec()) {
|
||||
EditFeed *d=new EditFeed(feed,this);
|
||||
if(d->exec()) {
|
||||
@ -168,8 +169,6 @@ void ListFeeds::addData()
|
||||
sql=QString("delete from `FEEDS` where ")+
|
||||
"`KEY_NAME`='"+RDEscapeString(feed)+"'";
|
||||
RDSqlQuery::apply(sql);
|
||||
|
||||
return;
|
||||
}
|
||||
delete d;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user