mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-12-30 16:38:40 +01: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:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user