2020-05-20 Fred Gleason <fredg@paravelsystems.com>

* Added 'FEEDS.CHANNEL_AUTHOR', 'FEEDS.CHANNEL_OWNER_NAME',
	'FEEDS.CHANNEL_OWNER_EMAIL', 'FEEDS.CHANNEL_EXPLICIT' and
	'PODCASTS.ITEM_EXPLICIT' fields to the database.
	* Incremented the database version to 326.
	* Added 'RDFeed::channelAuthor()', 'RDFeed::setChannelAuthor()',
	'RDFeed::channelOwnerName()', 'RDFeed::setChannelOwnerName()',
	'RDFeed::channelOwnerEmail(), 'RDFeed::setChannelOwnerEmail()',
	'RDFeed::channelExplicit()', 'RDFeed::setChannelExplicit()',
	'RDPodcast::itemExplicit()' and 'RDPodcast::setItemExplicit()'
	methods.
	* Added 'Author', Owner Name' and 'Owner E-Mail controls to the
	'Edit Feed' dialog box in rdadmin(1).
	* Added a 'Channel contains explicit content' checkbox to the
	'Edit Feed' dialog box in rdadmin(1).

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason 2020-05-20 12:42:54 -04:00
parent e5c465fb57
commit b326c2d24f
20 changed files with 574 additions and 231 deletions

View File

@ -19946,3 +19946,18 @@
* Added 'RDRssSchemas' class.
2020-05-18 Fred Gleason <fredg@paravelsystems.com>
* Added code to remove remote imaging when deleting an RSS feed.
2020-05-20 Fred Gleason <fredg@paravelsystems.com>
* Added 'FEEDS.CHANNEL_AUTHOR', 'FEEDS.CHANNEL_OWNER_NAME',
'FEEDS.CHANNEL_OWNER_EMAIL', 'FEEDS.CHANNEL_EXPLICIT' and
'PODCASTS.ITEM_EXPLICIT' fields to the database.
* Incremented the database version to 326.
* Added 'RDFeed::channelAuthor()', 'RDFeed::setChannelAuthor()',
'RDFeed::channelOwnerName()', 'RDFeed::setChannelOwnerName()',
'RDFeed::channelOwnerEmail(), 'RDFeed::setChannelOwnerEmail()',
'RDFeed::channelExplicit()', 'RDFeed::setChannelExplicit()',
'RDPodcast::itemExplicit()' and 'RDPodcast::setItemExplicit()'
methods.
* Added 'Author', Owner Name' and 'Owner E-Mail controls to the
'Edit Feed' dialog box in rdadmin(1).
* Added a 'Channel contains explicit content' checkbox to the
'Edit Feed' dialog box in rdadmin(1).

View File

@ -4,18 +4,22 @@ The FEEDS table holds data concerning which defines RSS feeds.
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
ID int(10) unsigned Primary key, auto increment
KEY_NAME varchar(8) Unique
IS_SUPERFEED enum('N','Y')
AUDIENCE_METRICS enum('N','Y')
CHANNEL_TITLE varchar(191)
CHANNEL_DESCRIPTION text
CHANNEL_CATEGORY varchar(64)
ID int(10) unsigned Primary key, auto increment
KEY_NAME varchar(8) Unique
IS_SUPERFEED enum('N','Y')
AUDIENCE_METRICS enum('N','Y')
CHANNEL_TITLE varchar(191)
CHANNEL_DESCRIPTION text
CHANNEL_CATEGORY varchar(64)
CHANNEL_LINK varchar(191)
CHANNEL_COPYRIGHT varchar(64)
CHANNEL_EDITOR varchar(64)
CHANNEL_AUTHOR varchar(64)
CHANNEL_OWNER_NAME varchar(64)
CHANNEL_OWNER_EMAIL varchar(64)
CHANNEL_WEBMASTER varchar(64)
CHANNEL_LANGUAGE varchar(5)
CHANNEL_EXPLICIT enum('N','Y')
CHANNEL_IMAGE_ID int(11) From FEED_IMAGES.ID
BASE_URL varchar(191)
BASE_PREAMBLE varchar(191)

View File

@ -15,6 +15,7 @@ ITEM_COMMENTS varchar(191)
ITEM_AUTHOR varchar(191)
ITEM_SOURCE_TEXT varchar(64)
ITEM_SOURCE_URL varchar(191)
ITEM_EXPLICIT enum('N','Y')
ITEM_IMAGE_ID int(11) From FEED_IMAGES.ID
AUDIO_FILENAME varchar(191)
AUDIO_LENGTH int(10) unsigned

View File

@ -24,7 +24,7 @@
/*
* Current Database Version
*/
#define RD_VERSION_DATABASE 325
#define RD_VERSION_DATABASE 326
#endif // DBVERSION_H

View File

@ -279,6 +279,45 @@ void RDFeed::setChannelEditor(const QString &str) const
}
QString RDFeed::channelAuthor() const
{
return RDGetSqlValue("FEEDS","KEY_NAME",feed_keyname,"CHANNEL_AUTHOR").
toString();
}
void RDFeed::setChannelAuthor(const QString &str) const
{
SetRow("CHANNEL_AUTHOR",str);
}
QString RDFeed::channelOwnerName() const
{
return RDGetSqlValue("FEEDS","KEY_NAME",feed_keyname,"CHANNEL_OWNER_NAME").
toString();
}
void RDFeed::setChannelOwnerName(const QString &str) const
{
SetRow("CHANNEL_OWNER_NAME",str);
}
QString RDFeed::channelOwnerEmail() const
{
return RDGetSqlValue("FEEDS","KEY_NAME",feed_keyname,"CHANNEL_OWNER_EMAIL").
toString();
}
void RDFeed::setChannelOwnerEmail(const QString &str) const
{
SetRow("CHANNEL_OWNER_EMAIL",str);
}
QString RDFeed::channelLanguage() const
{
return RDGetSqlValue("FEEDS","KEY_NAME",feed_keyname,"CHANNEL_LANGUAGE").
@ -292,6 +331,19 @@ void RDFeed::setChannelLanguage(const QString &str)
}
bool RDFeed::channelExplicit() const
{
return RDBool(RDGetSqlValue("FEEDS","KEY_NAME",feed_keyname,
"CHANNEL_EXPLICIT").toString());
}
void RDFeed::setChannelExplicit(bool state) const
{
SetRow("CHANNEL_EXPLICIT",RDYesNo(state));
}
int RDFeed::channelImageId() const
{
return RDGetSqlValue("FEEDS","KEY_NAME",feed_keyname,"CHANNEL_IMAGE_ID").
@ -1192,26 +1244,30 @@ QString RDFeed::rssXml(QString *err_msg,bool *ok)
"FEEDS.CHANNEL_LINK,"+ // 03
"FEEDS.CHANNEL_COPYRIGHT,"+ // 04
"FEEDS.CHANNEL_EDITOR,"+ // 05
"FEEDS.CHANNEL_WEBMASTER,"+ // 06
"FEEDS.CHANNEL_LANGUAGE,"+ // 07
"FEEDS.LAST_BUILD_DATETIME,"+ // 08
"FEEDS.ORIGIN_DATETIME,"+ // 09
"FEEDS.HEADER_XML,"+ // 10
"FEEDS.CHANNEL_XML,"+ // 11
"FEEDS.ITEM_XML,"+ // 12
"FEEDS.BASE_URL,"+ // 13
"FEEDS.ID,"+ // 14
"FEEDS.UPLOAD_EXTENSION,"+ // 15
"FEEDS.CAST_ORDER,"+ // 16
"FEEDS.REDIRECT_PATH,"+ // 17
"FEEDS.BASE_PREAMBLE,"+ // 18
"FEEDS.AUDIENCE_METRICS,"+ // 19
"FEEDS.IS_SUPERFEED,"+ // 20
"FEED_IMAGES.ID,"+ // 21
"FEED_IMAGES.WIDTH,"+ // 22
"FEED_IMAGES.HEIGHT,"+ // 23
"FEED_IMAGES.DESCRIPTION,"+ // 24
"FEED_IMAGES.FILE_EXTENSION "+ // 25
"FEEDS.CHANNEL_AUTHOR,"+ // 06
"FEEDS.CHANNEL_OWNER_NAME,"+ // 07
"FEEDS.CHANNEL_OWNER_EMAIL,"+ // 08
"FEEDS.CHANNEL_WEBMASTER,"+ // 09
"FEEDS.CHANNEL_LANGUAGE,"+ // 10
"FEEDS.CHANNEL_EXPLICIT,"+ // 11
"FEEDS.LAST_BUILD_DATETIME,"+ // 12
"FEEDS.ORIGIN_DATETIME,"+ // 13
"FEEDS.HEADER_XML,"+ // 14
"FEEDS.CHANNEL_XML,"+ // 15
"FEEDS.ITEM_XML,"+ // 16
"FEEDS.BASE_URL,"+ // 17
"FEEDS.ID,"+ // 18
"FEEDS.UPLOAD_EXTENSION,"+ // 19
"FEEDS.CAST_ORDER,"+ // 20
"FEEDS.REDIRECT_PATH,"+ // 21
"FEEDS.BASE_PREAMBLE,"+ // 22
"FEEDS.AUDIENCE_METRICS,"+ // 23
"FEEDS.IS_SUPERFEED,"+ // 24
"FEED_IMAGES.ID,"+ // 25
"FEED_IMAGES.WIDTH,"+ // 26
"FEED_IMAGES.HEIGHT,"+ // 27
"FEED_IMAGES.DESCRIPTION,"+ // 28
"FEED_IMAGES.FILE_EXTENSION "+ // 29
"from FEEDS ";
sql+="left join FEED_IMAGES ";
sql+="on FEEDS.CHANNEL_IMAGE_ID=FEED_IMAGES.ID ";
@ -1230,9 +1286,9 @@ QString RDFeed::rssXml(QString *err_msg,bool *ok)
QString channel_template=rssSchemas()->channelTemplate(rssSchema());
QString item_template=rssSchemas()->itemTemplate(rssSchema());
if(rssSchema()==RDRssSchemas::CustomSchema) {
header_template=q->value(10).toString();
channel_template=q->value(11).toString();
item_template=q->value(12).toString();
header_template=q->value(14).toString();
channel_template=q->value(15).toString();
item_template=q->value(16).toString();
}
//
@ -1250,20 +1306,20 @@ QString RDFeed::rssXml(QString *err_msg,bool *ok)
// Render Item XML
//
QString where;
if(q->value(20).toString()=="Y") {
if(q->value(24).toString()=="Y") {
sql=QString("select ")+
"MEMBER_FEED_ID "+ // 00
"from SUPERFEED_MAPS where "+
QString().sprintf("FEED_ID=%d",q->value(14).toUInt());
QString().sprintf("FEED_ID=%d",q->value(18).toUInt());
q1=new RDSqlQuery(sql);
while(q1->next()) {
where+=QString().sprintf("(FEED_ID=%u) || ",q1->value(0).toUInt());
where+=QString().sprintf("(PODCASTS.FEED_ID=%u) || ",q1->value(0).toUInt());
}
delete q1;
where=("("+where.left(where.length()-4)+") && ");
}
else {
where =QString().sprintf("(FEED_ID=%u)&&",q->value(14).toUInt());
where =QString().sprintf("(PODCASTS.FEED_ID=%u)&&",q->value(18).toUInt());
}
sql=QString("select ")+
"PODCASTS.ITEM_TITLE,"+ // 00
@ -1274,18 +1330,26 @@ QString RDFeed::rssXml(QString *err_msg,bool *ok)
"PODCASTS.ITEM_SOURCE_TEXT,"+ // 05
"PODCASTS.ITEM_SOURCE_URL,"+ // 06
"PODCASTS.ITEM_COMMENTS,"+ // 07
"PODCASTS.AUDIO_FILENAME,"+ // 08
"PODCASTS.AUDIO_LENGTH,"+ // 09
"PODCASTS.AUDIO_TIME,"+ // 10
"PODCASTS.EFFECTIVE_DATETIME,"+ // 11
"PODCASTS.ID,"+ // 12
"FEEDS.BASE_URL "+ // 13
"PODCASTS.ITEM_EXPLICIT,"+ // 08
"PODCASTS.AUDIO_FILENAME,"+ // 09
"PODCASTS.AUDIO_LENGTH,"+ // 10
"PODCASTS.AUDIO_TIME,"+ // 11
"PODCASTS.EFFECTIVE_DATETIME,"+ // 12
"PODCASTS.ID,"+ // 13
"FEEDS.BASE_URL,"+ // 14
"FEED_IMAGES.ID,"+ // 15
"FEED_IMAGES.WIDTH,"+ // 16
"FEED_IMAGES.HEIGHT,"+ // 17
"FEED_IMAGES.DESCRIPTION,"+ // 18
"FEED_IMAGES.FILE_EXTENSION "+ // 19
"from PODCASTS left join FEEDS "+
"on PODCASTS.FEED_ID=FEEDS.ID where "+
"on PODCASTS.FEED_ID=FEEDS.ID "+
"left join FEED_IMAGES "+
"on PODCASTS.ITEM_IMAGE_ID=FEED_IMAGES.ID where "+
where+
QString().sprintf("(PODCASTS.STATUS=%d) ",RDPodcast::StatusActive)+
"order by PODCASTS.ORIGIN_DATETIME";
if(q->value(16).toString()=="N") {
if(q->value(20).toString()=="N") {
sql+=" desc";
}
q1=new RDSqlQuery(sql);
@ -1635,23 +1699,31 @@ QString RDFeed::ResolveChannelWildcards(const QString &tmplt,RDSqlQuery *chan_q)
ret.replace("%LINK%",RDXmlEscape(chan_q->value(3).toString()));
ret.replace("%COPYRIGHT%",RDXmlEscape(chan_q->value(4).toString()));
ret.replace("%EDITOR%",RDXmlEscape(chan_q->value(5).toString()));
ret.replace("%WEBMASTER%",RDXmlEscape(chan_q->value(6).toString()));
ret.replace("%LANGUAGE%",RDXmlEscape(chan_q->value(7).toString()));
ret.replace("%BUILD_DATE%",chan_q->value(8).toDateTime().
ret.replace("%AUTHOR%",RDXmlEscape(chan_q->value(6).toString()));
ret.replace("%OWNER_NAME%",RDXmlEscape(chan_q->value(7).toString()));
ret.replace("%OWNER_EMAIL%",RDXmlEscape(chan_q->value(8).toString()));
ret.replace("%WEBMASTER%",RDXmlEscape(chan_q->value(9).toString()));
ret.replace("%LANGUAGE%",RDXmlEscape(chan_q->value(10).toString()));
QString explicit_str="false";
if(chan_q->value(11).toString()=="Y") {
explicit_str="true";
}
ret.replace("%EXPLICIT%",RDXmlEscape(explicit_str));
ret.replace("%BUILD_DATE%",chan_q->value(12).toDateTime().
toString("ddd, d MMM yyyy hh:mm:ss ")+"GMT");
ret.replace("%PUBLISH_DATE%",chan_q->value(9).toDateTime().
ret.replace("%PUBLISH_DATE%",chan_q->value(13).toDateTime().
toString("ddd, d MMM yyyy hh:mm:ss ")+"GMT");
ret.replace("%GENERATOR%",QString("Rivendell ")+VERSION);
ret.replace("%FEED_URL%",RDXmlEscape(chan_q->value(13).toString())+"/"+
ret.replace("%FEED_URL%",RDXmlEscape(chan_q->value(17).toString())+"/"+
RDXmlEscape(keyName()+"."+RD_RSS_XML_FILE_EXTENSION));
ret.replace("%IMAGE_URL%",chan_q->value(13).toString()+"/"+
RDFeed::imageFilename(id(),chan_q->value(21).toInt(),
chan_q->value(25).toString()));
ret.replace("%IMAGE_URL%",chan_q->value(17).toString()+"/"+
RDFeed::imageFilename(id(),chan_q->value(25).toInt(),
chan_q->value(29).toString()));
ret.replace("%IMAGE_WIDTH%",
QString().sprintf("%d",chan_q->value(22).toInt()));
QString().sprintf("%d",chan_q->value(26).toInt()));
ret.replace("%IMAGE_HEIGHT%",
QString().sprintf("%d",chan_q->value(23).toInt()));
ret.replace("%IMAGE_DESCRIPTION%",chan_q->value(24).toString());
QString().sprintf("%d",chan_q->value(26).toInt()));
ret.replace("%IMAGE_DESCRIPTION%",chan_q->value(28).toString());
return ret;
}
@ -1680,29 +1752,40 @@ QString RDFeed::ResolveItemWildcards(const QString &tmplt,RDSqlQuery *item_q,
ret.replace("%ITEM_SOURCE_TEXT%",
RDXmlEscape(chan_q->value(0).toString()));
ret.replace("%ITEM_SOURCE_URL%",
RDXmlEscape(item_q->value(13).toString()+"/"+keyName()));
RDXmlEscape(item_q->value(14).toString()+"/"+keyName()));
}
ret.replace("%ITEM_COMMENTS%",
RDXmlEscape(item_q->value(7).toString()));
if(chan_q->value(19).toString()=="Y") {
QString explicit_str="false";
if(item_q->value(8).toString()=="Y") {
explicit_str="true";
}
ret.replace("%ITEM_EXPLICIT%",explicit_str);
if(chan_q->value(23).toString()=="Y") {
ret.replace("%ITEM_AUDIO_URL%",
RDXmlEscape(audioUrl(RDFeed::LinkCounted,feed_cgi_hostname,
item_q->value(12).toUInt())));
item_q->value(13).toUInt())));
}
else {
ret.replace("%ITEM_AUDIO_URL%",
RDXmlEscape(audioUrl(RDFeed::LinkDirect,feed_cgi_hostname,
item_q->value(12).toUInt())));
item_q->value(13).toUInt())));
}
ret.replace("%ITEM_AUDIO_LENGTH%",item_q->value(9).toString());
ret.replace("%ITEM_AUDIO_LENGTH%",item_q->value(10).toString());
ret.replace("%ITEM_AUDIO_TIME%",
RDGetTimeLength(item_q->value(10).toInt(),false,false));
ret.replace("%ITEM_PUBLISH_DATE%",item_q->value(11).toDateTime().
RDGetTimeLength(item_q->value(11).toInt(),false,false));
ret.replace("%ITEM_AUDIO_SECONDS%",
QString().sprintf("%d",item_q->value(11).toInt()/1000));
ret.replace("%ITEM_PUBLISH_DATE%",item_q->value(12).toDateTime().
toString("ddd, d MMM yyyy hh:mm:ss ")+"GMT");
ret.replace("%ITEM_GUID%",RDPodcast::guid(chan_q->value(13).toString(),
item_q->value(8).toString(),
chan_q->value(12).toUInt(),
item_q->value(12).toUInt()));
ret.replace("%ITEM_GUID%",RDPodcast::guid(chan_q->value(17).toString(),
item_q->value(9).toString(),
chan_q->value(16).toUInt(),
item_q->value(13).toUInt()));
ret.replace("%ITEM_IMAGE_URL%",chan_q->value(17).toString()+"/"+
RDFeed::imageFilename(chan_q->value(18).toInt(),
item_q->value(15).toInt(),
item_q->value(19).toString()));
return ret;
}

View File

@ -63,10 +63,18 @@ class RDFeed : public QObject
void setChannelCopyright(const QString &str) const;
QString channelEditor() const;
void setChannelEditor(const QString &str) const;
QString channelAuthor() const;
void setChannelAuthor(const QString &str) const;
QString channelOwnerName() const;
void setChannelOwnerName(const QString &str) const;
QString channelOwnerEmail() const;
void setChannelOwnerEmail(const QString &str) const;
QString channelWebmaster() const;
void setChannelWebmaster(const QString &str) const;
QString channelLanguage() const;
void setChannelLanguage(const QString &str);
bool channelExplicit() const;
void setChannelExplicit(bool state) const;
int channelImageId() const;
void setChannelImageId(int img_id) const;
int defaultItemImageId() const;

View File

@ -27,20 +27,23 @@ RDRssSchemas::RDRssSchemas()
//
c_names.push_back("Custom"); // CustomSchema
c_names.push_back("RSS 2.0.2"); // Rss202Schema
c_names.push_back("Apple"); // AppleSchema
//
// Minimum Images Sizes
//
c_minimum_image_sizes.push_back(QSize(0,0)); // CustomSchema
c_minimum_image_sizes.push_back(QSize(88,31)); // Rss202Schema
c_minimum_image_sizes.push_back(QSize(0,0)); // CustomSchema
c_minimum_image_sizes.push_back(QSize(88,31)); // Rss202Schema
c_minimum_image_sizes.push_back(QSize(1400,1400)); // AppleSchema
//
// Maximum Image Sizes
//
c_maximum_image_sizes.push_back(QSize(0,0)); // CustomSchema
c_maximum_image_sizes.push_back(QSize(144,400)); // Rss202Schema
c_maximum_image_sizes.push_back(QSize(0,0)); // CustomSchema
c_maximum_image_sizes.push_back(QSize(144,400)); // Rss202Schema
c_maximum_image_sizes.push_back(QSize(3000,3000)); // AppleSchema
//
@ -52,6 +55,8 @@ RDRssSchemas::RDRssSchemas()
// Rss202Schema
c_header_templates.push_back("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">");
// AppleSchema
c_header_templates.push_back("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rss version=\"2.0\" xmlns:itunes=\"http://www.itunes.com/dtds/podcast-1.0.dtd\" xmlns:content=\"http://purl.org/rss/1.0/modules/content/\">");
//
// Channel Templates
@ -62,6 +67,22 @@ RDRssSchemas::RDRssSchemas()
// Rs202Schema
c_channel_templates.push_back("<title>%TITLE%</title>\n<description>%DESCRIPTION%</description>\n<category>%CATEGORY%</category>\n<link>%LINK%</link>\n<language>%LANGUAGE%</language>\n<copyright>%COPYRIGHT%</copyright>\n<lastBuildDate>%BUILD_DATE%</lastBuildDate>\n<pubDate>%PUBLISH_DATE%</pubDate>\n<managingEditor>%EDITOR%</managingEditor>\n<webMaster>%WEBMASTER%</webMaster>\n<generator>%GENERATOR%</generator>\n<image>\n <url>%IMAGE_URL%</url>\n <title>%TITLE%</title>\n <link>%LINK%</link>\n <width>%IMAGE_WIDTH%</width>\n <height>%IMAGE_HEIGHT%</height>\n <description>%IMAGE_DESCRIPTION%</description>\n</image>\n<atom:link href=\"%FEED_URL%\" rel=\"self\" type=\"application/rss+xml\" />");
// AppleSchema
c_channel_templates.push_back("<title>%TITLE%</title>\n<description>%DESCRIPTION%</description>\n<category>%CATEGORY%</category>\n<link>%LINK%</link>\n<language>%LANGUAGE%</language>\n<copyright>%COPYRIGHT%</copyright>\n<itunes:author>%AUTHOR%</itunes:author>\n<lastBuildDate>%BUILD_DATE%</lastBuildDate>\n<pubDate>%PUBLISH_DATE%</pubDate>\n<managingEditor>%EDITOR%</managingEditor>\n<webMaster>%WEBMASTER%</webMaster>\n<generator>%GENERATOR%</generator>\n<image>\n <url>%IMAGE_URL%</url>\n <title>%TITLE%</title>\n <link>%LINK%</link>\n <width>%IMAGE_WIDTH%</width>\n <height>%IMAGE_HEIGHT%</height>\n <description>%IMAGE_DESCRIPTION%</description>\n</image>\n<atom:link href=\"%FEED_URL%\" rel=\"self\" type=\"application/rss+xml\" />");
//
// Item Image Support
//
// CustomSchema
c_supports_item_images.push_back(true);
// Rss202Schema
c_supports_item_images.push_back(false);
// AppleSchema
c_supports_item_images.push_back(true);
//
// Item Templates
@ -108,3 +129,9 @@ QString RDRssSchemas::itemTemplate(RssSchema schema) const
{
return c_item_templates.at(schema);
}
bool RDRssSchemas::supportsItemImages(RssSchema schema) const
{
return c_supports_item_images.at(schema);
}

View File

@ -29,7 +29,7 @@
class RDRssSchemas
{
public:
enum RssSchema {CustomSchema=0,Rss202Schema=1,LastSchema=2};
enum RssSchema {CustomSchema=0,Rss202Schema=1,AppleSchema=2,LastSchema=3};
RDRssSchemas();
QString name(RssSchema schema) const;
QSize minimumImageSize(RssSchema schema) const;
@ -37,6 +37,7 @@ class RDRssSchemas
QString headerTemplate(RssSchema schema) const;
QString channelTemplate(RssSchema schema) const;
QString itemTemplate(RssSchema schema) const;
bool supportsItemImages(RssSchema schema) const;
private:
QStringList c_names;
@ -45,6 +46,7 @@ class RDRssSchemas
QStringList c_header_templates;
QStringList c_channel_templates;
QStringList c_item_templates;
QList<bool> c_supports_item_images;
};

View File

@ -57,15 +57,8 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
feed_images_dialog=new ListImages(feed_image_model,this);
//
// Feed Name
// Superfeed Settings
//
feed_keyname_edit=new QLineEdit(this);
feed_keyname_edit->setMaxLength(8);
feed_keyname_edit->setReadOnly(true);
feed_keyname_label=new QLabel(feed_keyname_edit,tr("Key Name:"),this);
feed_keyname_label->setFont(labelFont());
feed_keyname_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
feed_is_superfeed_box=new QComboBox(this);
feed_is_superfeed_box->insertItem(0,tr("No"));
feed_is_superfeed_box->insertItem(1,tr("Yes"));
@ -154,6 +147,39 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
feed_channel_editor_label->
setAlignment(Qt::AlignRight|Qt::AlignVCenter);
//
// Channel Author
//
feed_channel_author_edit=new QLineEdit(this);
feed_channel_author_edit->setMaxLength(64);
feed_channel_author_label=
new QLabel(feed_channel_author_edit,tr("Author:"),this);
feed_channel_author_label->setFont(labelFont());
feed_channel_author_label->
setAlignment(Qt::AlignRight|Qt::AlignVCenter);
//
// Channel Owner Name
//
feed_channel_owner_name_edit=new QLineEdit(this);
feed_channel_owner_name_edit->setMaxLength(64);
feed_channel_owner_name_label=
new QLabel(feed_channel_owner_name_edit,tr("Owner Name:"),this);
feed_channel_owner_name_label->setFont(labelFont());
feed_channel_owner_name_label->
setAlignment(Qt::AlignRight|Qt::AlignVCenter);
//
// Channel Owner Email
//
feed_channel_owner_email_edit=new QLineEdit(this);
feed_channel_owner_email_edit->setMaxLength(64);
feed_channel_owner_email_label=
new QLabel(feed_channel_owner_email_edit,tr("Owner E-Mail:"),this);
feed_channel_owner_email_label->setFont(labelFont());
feed_channel_owner_email_label->
setAlignment(Qt::AlignRight|Qt::AlignVCenter);
//
// Channel Webmaster
//
@ -175,6 +201,15 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
feed_channel_language_label->setFont(labelFont());
feed_channel_language_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
//
// Channel is Explicit
//
feed_channel_explicit_check=new QCheckBox(this);
feed_channel_explicit_label=new QLabel(feed_channel_explicit_check,
tr("Channel contains explicit content"),this);
feed_channel_explicit_label->setFont(labelFont());
feed_channel_explicit_label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
//
// Channel Image
//
@ -364,20 +399,6 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
feed_item_image_label->setFont(labelFont());
feed_item_image_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
//
// Feed Redirection
//
feed_redirect_check=new QCheckBox(this);
feed_redirect_label=
new QLabel(feed_redirect_check,tr("Enable Feed Redirection"),this);
feed_redirect_label->setFont(labelFont());
feed_redirect_label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
feed_redirect_url_edit=new QLineEdit(this);
feed_redirect_url_label=new QLabel(feed_redirect_url_edit,tr("URL:"),this);
feed_redirect_url_label->setFont(labelFont());
feed_redirect_url_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
//
// RSS Schema
//
@ -421,6 +442,24 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
feed_item_xml_label->setFont(labelFont());
feed_item_xml_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
//
// Feed Redirection
//
feed_redirect_check=new QCheckBox(this);
connect(feed_audience_metrics_check,SIGNAL(toggled(bool)),
feed_redirect_check,SLOT(setEnabled(bool)));
feed_redirect_label=
new QLabel(feed_redirect_check,tr("Enable Feed Redirection"),this);
connect(feed_audience_metrics_check,SIGNAL(toggled(bool)),
feed_redirect_label,SLOT(setEnabled(bool)));
feed_redirect_label->setFont(labelFont());
feed_redirect_label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
feed_redirect_url_edit=new QLineEdit(this);
feed_redirect_url_label=new QLabel(feed_redirect_url_edit,tr("URL:"),this);
feed_redirect_url_label->setFont(labelFont());
feed_redirect_url_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
//
// Ok Button
//
@ -441,18 +480,23 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
//
// Populate Values
//
feed_keyname_edit->setText(feed_feed->keyName());
feed_is_superfeed_box->setCurrentIndex(feed_feed->isSuperfeed());
feed_audience_metrics_check->setChecked(feed_feed->audienceMetrics());
feed_redirect_check->setEnabled(feed_audience_metrics_check->isChecked());
feed_redirect_label->setEnabled(feed_audience_metrics_check->isChecked());
feed_channel_title_edit->setText(feed_feed->channelTitle());
feed_channel_category_edit->setText(feed_feed->channelCategory());
feed_channel_link_edit->setText(feed_feed->channelLink());
feed_channel_copyright_edit->setText(feed_feed->channelCopyright());
feed_channel_editor_edit->setText(feed_feed->channelEditor());
feed_channel_author_edit->setText(feed_feed->channelAuthor());
feed_channel_owner_name_edit->setText(feed_feed->channelOwnerName());
feed_channel_owner_email_edit->setText(feed_feed->channelOwnerEmail());
feed_channel_webmaster_edit->setText(feed_feed->channelWebmaster());
feed_channel_description_edit->setPlainText(feed_feed->channelDescription());
feed_channel_image_box->setCurrentImageId(feed_feed->channelImageId());
feed_channel_language_edit->setText(feed_feed->channelLanguage());
feed_channel_explicit_check->setChecked(feed_feed->channelExplicit());
feed_base_url_edit->setText(feed_feed->baseUrl(""));
feed_base_preamble_edit->setText(feed_feed->basePreamble());
feed_purge_url_edit->setText(feed_feed->purgeUrl());
@ -614,9 +658,13 @@ void EditFeed::okData()
feed_feed->setChannelLink(feed_channel_link_edit->text());
feed_feed->setChannelCopyright(feed_channel_copyright_edit->text());
feed_feed->setChannelEditor(feed_channel_editor_edit->text());
feed_feed->setChannelAuthor(feed_channel_author_edit->text());
feed_feed->setChannelOwnerName(feed_channel_owner_name_edit->text());
feed_feed->setChannelOwnerEmail(feed_channel_owner_email_edit->text());
feed_feed->setChannelWebmaster(feed_channel_webmaster_edit->text());
feed_feed->setChannelDescription(feed_channel_description_edit->text());
feed_feed->setChannelLanguage(feed_channel_language_edit->text());
feed_feed->setChannelExplicit(feed_channel_explicit_check->isChecked());
feed_feed->setChannelImageId(feed_channel_image_box->currentImageId());
feed_feed->setDefaultItemImageId(feed_item_image_box->currentImageId());
feed_feed->setBaseUrl(feed_base_url_edit->text());
@ -669,88 +717,98 @@ void EditFeed::resizeEvent(QResizeEvent *e)
{
feed_image_model->rescaleImages(QSize(36,36));
feed_keyname_edit->setGeometry(115,11,100,19);
feed_keyname_label->setGeometry(10,11,100,19);
//
// Left-hand Side
//
feed_is_superfeed_box->setGeometry(115,13,60,19);
feed_is_superfeed_label->setGeometry(10,13,100,19);
feed_is_superfeed_button->setGeometry(185,13,140,38);
feed_is_superfeed_box->setGeometry(115,33,60,19);
feed_is_superfeed_label->setGeometry(10,33,100,19);
feed_is_superfeed_button->setGeometry(185,33,140,38);
feed_list_images_button->setGeometry(345,13,100,38);
feed_list_images_button->setGeometry(345,33,100,38);
feed_audience_metrics_check->setGeometry(20,54,15,15);
feed_audience_metrics_label->setGeometry(40,52,375,19);
feed_audience_metrics_check->setGeometry(20,74,15,15);
feed_audience_metrics_label->setGeometry(40,72,375,19);
feed_channel_section_groupbox->setGeometry(10,77,sizeHint().width()/2-10,355);
feed_channel_title_edit->setGeometry(115,92,375,19);
feed_channel_title_label->setGeometry(20,92,90,19);
feed_channel_category_edit->setGeometry(115,114,375,19);
feed_channel_category_label->setGeometry(20,114,90,19);
feed_channel_link_edit->setGeometry(115,136,375,19);
feed_channel_link_label->setGeometry(20,136,90,19);
feed_channel_copyright_edit->setGeometry(115,158,375,19);
feed_channel_copyright_label->setGeometry(20,158,90,19);
feed_channel_editor_edit->setGeometry(115,180,375,19);
feed_channel_editor_label->setGeometry(20,180,90,19);
feed_channel_section_groupbox->setGeometry(10,97,sizeHint().width()/2-10,289);
feed_channel_title_edit->setGeometry(115,112,375,19);
feed_channel_title_label->setGeometry(20,112,90,19);
feed_channel_category_edit->setGeometry(115,134,375,19);
feed_channel_category_label->setGeometry(20,134,90,19);
feed_channel_link_edit->setGeometry(115,156,375,19);
feed_channel_link_label->setGeometry(20,156,90,19);
feed_channel_copyright_edit->setGeometry(115,178,375,19);
feed_channel_copyright_label->setGeometry(20,178,90,19);
feed_channel_editor_edit->setGeometry(115,200,375,19);
feed_channel_editor_label->setGeometry(20,200,90,19);
feed_channel_webmaster_edit->setGeometry(115,222,375,19);
feed_channel_webmaster_label->setGeometry(20,222,90,19);
feed_channel_language_edit->setGeometry(115,244,60,19);
feed_channel_language_label->setGeometry(20,244,90,19);
feed_channel_description_edit->setGeometry(115,266,375,76);
feed_channel_description_label->setGeometry(20,266,90,19);
feed_channel_image_box->setGeometry(115,344,375,38);
feed_channel_author_edit->setGeometry(115,201,375,19);
feed_channel_author_label->setGeometry(20,201,90,19);
feed_channel_owner_name_edit->setGeometry(115,223,375,19);
feed_channel_owner_name_label->setGeometry(20,223,90,19);
feed_channel_owner_email_edit->setGeometry(115,245,375,19);
feed_channel_owner_email_label->setGeometry(20,245,90,19);
feed_channel_webmaster_edit->setGeometry(115,267,375,19);
feed_channel_webmaster_label->setGeometry(20,267,90,19);
feed_channel_language_edit->setGeometry(115,289,60,19);
feed_channel_language_label->setGeometry(20,289,90,19);
feed_channel_explicit_check->setGeometry(205,291,15,15);
feed_channel_explicit_label->setGeometry(225,289,260,19);
feed_channel_description_edit->setGeometry(115,311,375,76);
feed_channel_description_label->setGeometry(20,311,90,19);
feed_channel_image_box->setGeometry(115,389,375,38);
feed_channel_image_box->setIconSize(QSize(36,36));
feed_channel_image_label->setGeometry(20,344,90,19);
feed_channel_image_label->setGeometry(20,389,90,19);
feed_purge_url_edit->setGeometry(155,394,335,19);
feed_purge_url_label->setGeometry(20,394,130,19);
feed_purge_username_edit->setGeometry(225,416,95,19);
feed_purge_username_label->setGeometry(40,416,180,19);
feed_purge_password_edit->setGeometry(395,416,95,19);
feed_purge_password_label->setGeometry(320,416,70,19);
feed_purge_url_edit->setGeometry(155,439,335,19);
feed_purge_url_label->setGeometry(20,439,130,19);
feed_purge_username_edit->setGeometry(225,461,95,19);
feed_purge_username_label->setGeometry(40,461,180,19);
feed_purge_password_edit->setGeometry(395,461,95,19);
feed_purge_password_label->setGeometry(320,461,70,19);
feed_format_edit->setGeometry(155,438,285,20);
feed_format_label->setGeometry(5,438,145,20);
feed_format_button->setGeometry(450,438,40,24);
feed_format_edit->setGeometry(155,483,285,20);
feed_format_label->setGeometry(5,483,145,20);
feed_format_button->setGeometry(450,483,40,24);
feed_normalize_check->setGeometry(155,462,15,15);
feed_normalize_check_label->setGeometry(175,460,83,20);
feed_normalize_spin->setGeometry(295,458,40,20);
feed_normalize_label->setGeometry(245,458,45,20);
feed_normalize_unit_label->setGeometry(340,458,40,20);
feed_normalize_check->setGeometry(155,507,15,15);
feed_normalize_check_label->setGeometry(175,505,83,20);
feed_normalize_spin->setGeometry(295,503,40,20);
feed_normalize_label->setGeometry(245,503,45,20);
feed_normalize_unit_label->setGeometry(340,503,40,20);
feed_base_url_edit->setGeometry(155,482,335,19);
feed_base_url_label->setGeometry(5,482,145,19);
feed_keep_metadata_box->setGeometry(155,504,15,15);
feed_keep_metadata_label->setGeometry(175,502,180,19);
feed_autopost_box->setGeometry(365,504,15,15);
feed_autopost_label->setGeometry(385,502,200,19);
feed_base_url_edit->setGeometry(155,527,335,19);
feed_base_url_label->setGeometry(5,527,145,19);
feed_keep_metadata_box->setGeometry(155,549,15,15);
feed_keep_metadata_label->setGeometry(175,547,180,19);
feed_autopost_box->setGeometry(365,549,15,15);
feed_autopost_label->setGeometry(385,547,200,19);
feed_base_preamble_edit->setGeometry(155,526,335,19);
feed_base_preamble_label->setGeometry(20,526,130,19);
feed_base_preamble_edit->setGeometry(155,571,335,19);
feed_base_preamble_label->setGeometry(20,571,130,19);
feed_extension_edit->setGeometry(155,548,70,19);
feed_extension_label->setGeometry(20,548,130,19);
feed_extension_edit->setGeometry(155,593,70,19);
feed_extension_label->setGeometry(20,593,130,19);
feed_max_shelf_life_spin->setGeometry(155,570,60,19);
feed_max_shelf_life_label->setGeometry(20,570,130,19);
feed_max_shelf_life_unit_label->setGeometry(220,570,50,19);
feed_max_shelf_life_spin->setGeometry(155,615,60,19);
feed_max_shelf_life_label->setGeometry(20,615,130,19);
feed_max_shelf_life_unit_label->setGeometry(220,615,50,19);
feed_castorder_box->setGeometry(155,592,100,19);
feed_castorder_label->setGeometry(20,592,130,19);
feed_castorder_box->setGeometry(155,637,100,19);
feed_castorder_label->setGeometry(20,637,130,19);
feed_media_link_mode_box->setGeometry(155,614,100,19);
feed_media_link_mode_label->setGeometry(20,614,130,19);
feed_media_link_mode_box->setGeometry(155,659,100,19);
feed_media_link_mode_label->setGeometry(20,659,130,19);
feed_item_image_box->setGeometry(155,636,335,38);
feed_item_image_box->setGeometry(155,681,335,38);
feed_item_image_box->setIconSize(QSize(36,36));
feed_item_image_label->setGeometry(20,636,130,19);
feed_redirect_check->setGeometry(20,686,15,15);
feed_redirect_label->setGeometry(40,686,200,19);
feed_redirect_url_edit->setGeometry(85,706,405,20);
feed_redirect_url_label->setGeometry(40,706,40,19);
feed_item_image_label->setGeometry(20,681,130,19);
//
// Right-hand Side
//
feed_rss_schema_label->setGeometry(520,10,90,19);
feed_rss_schema_box->setGeometry(615,10,200,19);
@ -758,10 +816,15 @@ void EditFeed::resizeEvent(QResizeEvent *e)
feed_header_xml_edit->setGeometry(615,32,size().width()-625,76);
feed_channel_xml_label->setGeometry(520,110,90,19);
feed_channel_xml_edit->setGeometry(615,110,size().width()-625,216);
feed_channel_xml_edit->setGeometry(615,110,size().width()-625,256);
feed_item_xml_label->setGeometry(520,332,90,19);
feed_item_xml_edit->setGeometry(615,332,size().width()-625,240);
feed_item_xml_label->setGeometry(520,368,90,19);
feed_item_xml_edit->setGeometry(615,368,size().width()-625,240);
feed_redirect_check->setGeometry(550,615,15,15);
feed_redirect_label->setGeometry(570,615,200,19);
feed_redirect_url_edit->setGeometry(615,637,375,20);
feed_redirect_url_label->setGeometry(570,637,40,19);
feed_ok_button->setGeometry(size().width()-180,size().height()-60,80,50);
feed_cancel_button->setGeometry(size().width()-90,size().height()-60,80,50);
@ -775,7 +838,9 @@ void EditFeed::UpdateControlState()
bool custom_schema=
feed_rss_schema_box->itemData(feed_rss_schema_box->currentIndex()).toInt()==
RDRssSchemas::CustomSchema;
bool item_image=feed_rss_schema_box->itemData(feed_rss_schema_box->currentIndex()).toInt()!=RDRssSchemas::Rss202Schema;
bool item_image=feed_feed->rssSchemas()->
supportsItemImages((RDRssSchemas::RssSchema)feed_rss_schema_box->
itemData(feed_rss_schema_box->currentIndex()).toInt());
feed_is_superfeed_label->setDisabled(redirected);
feed_is_superfeed_box->setDisabled(redirected);
@ -793,9 +858,17 @@ void EditFeed::UpdateControlState()
feed_channel_copyright_edit->setDisabled(redirected);
feed_channel_editor_label->setDisabled(redirected);
feed_channel_editor_edit->setDisabled(redirected);
feed_channel_author_label->setDisabled(redirected);
feed_channel_author_edit->setDisabled(redirected);
feed_channel_owner_name_label->setDisabled(redirected);
feed_channel_owner_name_edit->setDisabled(redirected);
feed_channel_owner_email_label->setDisabled(redirected);
feed_channel_owner_email_edit->setDisabled(redirected);
feed_channel_webmaster_label->setDisabled(redirected);
feed_channel_webmaster_edit->setDisabled(redirected);
feed_channel_language_edit->setDisabled(redirected);
feed_channel_explicit_check->setDisabled(redirected);
feed_channel_explicit_label->setDisabled(redirected);
feed_channel_title_label->setDisabled(redirected);
feed_channel_category_label->setDisabled(redirected);
feed_channel_link_label->setDisabled(redirected);

View File

@ -65,8 +65,6 @@ class EditFeed : public RDDialog
void UpdateControlState();
RDFeed *feed_feed;
RDImagePickerModel *feed_image_model;
QLabel *feed_keyname_label;
QLineEdit *feed_keyname_edit;
QLabel *feed_is_superfeed_label;
QPushButton *feed_is_superfeed_button;
QPushButton *feed_list_images_button;
@ -80,9 +78,17 @@ class EditFeed : public RDDialog
QLineEdit *feed_channel_copyright_edit;
QLabel *feed_channel_editor_label;
QLineEdit *feed_channel_editor_edit;
QLabel *feed_channel_author_label;
QLineEdit *feed_channel_author_edit;
QLabel *feed_channel_owner_name_label;
QLineEdit *feed_channel_owner_name_edit;
QLabel *feed_channel_owner_email_label;
QLineEdit *feed_channel_owner_email_edit;
QLabel *feed_channel_webmaster_label;
QLineEdit *feed_channel_webmaster_edit;
QLineEdit *feed_channel_language_edit;
QCheckBox *feed_channel_explicit_check;
QLabel *feed_channel_explicit_label;
QLineEdit *feed_base_url_edit;
QLineEdit *feed_base_preamble_edit;
QLineEdit *feed_purge_url_edit;

View File

@ -1445,7 +1445,7 @@ files, causing any whose files remain to be imported again.</source>
</message>
<message>
<source>Key Name:</source>
<translation>Název klíče:</translation>
<translation type="obsolete">Název klíče:</translation>
</message>
<message>
<source>CHANNEL VALUES</source>
@ -1689,6 +1689,22 @@ Feeds</source>
<source>Images</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Author:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Owner Name:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Owner E-Mail:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Channel contains explicit content</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditFeedPerms</name>
@ -5121,11 +5137,11 @@ Stále ještě jej chcete smazat?</translation>
</message>
<message>
<source>Deleting Audio...</source>
<translation>Mazání zvuku...</translation>
<translation type="obsolete">Mazání zvuku...</translation>
</message>
<message>
<source>Cancel</source>
<translation>Zrušit</translation>
<translation type="obsolete">Zrušit</translation>
</message>
<message>
<source>Deleting</source>
@ -5147,6 +5163,10 @@ Stále ještě jej chcete smazat?</translation>
<source>Warning</source>
<translation type="unfinished">Varování</translation>
</message>
<message>
<source>Deleting remote audio...</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ListGpis</name>

View File

@ -1351,10 +1351,6 @@ files, causing any whose files remain to be imported again.</source>
<source>Feed: </source>
<translation type="unfinished">Feed:</translation>
</message>
<message>
<source>Key Name:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Title:</source>
<translation type="unfinished">Titel:</translation>
@ -1572,6 +1568,22 @@ Feeds</source>
<source>Images</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Author:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Owner Name:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Owner E-Mail:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Channel contains explicit content</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditFeedPerms</name>
@ -4949,14 +4961,6 @@ Wollen Sie ihn immernoch löschen?</translation>
<source>Delete Feed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Deleting Audio...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Superfeed</source>
<translation type="unfinished"></translation>
@ -4973,6 +4977,10 @@ Wollen Sie ihn immernoch löschen?</translation>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Deleting remote audio...</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ListGpis</name>

View File

@ -1447,7 +1447,7 @@ files, causing any whose files remain to be imported again.</source>
</message>
<message>
<source>Key Name:</source>
<translation>Nombre:</translation>
<translation type="obsolete">Nombre:</translation>
</message>
<message>
<source>Title:</source>
@ -1692,6 +1692,22 @@ Feeds</source>
<source>Images</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Author:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Owner Name:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Owner E-Mail:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Channel contains explicit content</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditFeedPerms</name>
@ -5088,11 +5104,11 @@ Do you still want to delete it?</source>
</message>
<message>
<source>Deleting Audio...</source>
<translation>Eliminando Audio...</translation>
<translation type="obsolete">Eliminando Audio...</translation>
</message>
<message>
<source>Cancel</source>
<translation>Cancelar</translation>
<translation type="obsolete">Cancelar</translation>
</message>
<message>
<source>Deleting</source>
@ -5114,6 +5130,10 @@ Do you still want to delete it?</source>
<source>Warning</source>
<translation type="unfinished">Advertencia</translation>
</message>
<message>
<source>Deleting remote audio...</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ListGpis</name>

View File

@ -1023,10 +1023,6 @@ files, causing any whose files remain to be imported again.</source>
<source>Feed: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Key Name:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Title:</source>
<translation type="unfinished"></translation>
@ -1244,6 +1240,22 @@ Feeds</source>
<source>Images</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Author:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Owner Name:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Owner E-Mail:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Channel contains explicit content</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditFeedPerms</name>
@ -4099,14 +4111,6 @@ Permissions</source>
<source>Delete Feed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Deleting Audio...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Superfeed</source>
<translation type="unfinished"></translation>
@ -4123,6 +4127,10 @@ Permissions</source>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Deleting remote audio...</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ListGpis</name>

View File

@ -1313,10 +1313,6 @@ files, causing any whose files remain to be imported again.</source>
<source>Feed: </source>
<translation type="unfinished">Straum:</translation>
</message>
<message>
<source>Key Name:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Title:</source>
<translation type="unfinished">Tittel:</translation>
@ -1534,6 +1530,22 @@ Feeds</source>
<source>Images</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Author:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Owner Name:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Owner E-Mail:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Channel contains explicit content</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditFeedPerms</name>
@ -4806,14 +4818,6 @@ Klikk på &quot;Lisens&quot;-knappen for fleire opplysningar.</translation>
<source>Delete Feed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Deleting Audio...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Superfeed</source>
<translation type="unfinished"></translation>
@ -4830,6 +4834,10 @@ Klikk på &quot;Lisens&quot;-knappen for fleire opplysningar.</translation>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Deleting remote audio...</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ListGpis</name>

View File

@ -1313,10 +1313,6 @@ files, causing any whose files remain to be imported again.</source>
<source>Feed: </source>
<translation type="unfinished">Straum:</translation>
</message>
<message>
<source>Key Name:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Title:</source>
<translation type="unfinished">Tittel:</translation>
@ -1534,6 +1530,22 @@ Feeds</source>
<source>Images</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Author:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Owner Name:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Owner E-Mail:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Channel contains explicit content</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditFeedPerms</name>
@ -4806,14 +4818,6 @@ Klikk på &quot;Lisens&quot;-knappen for fleire opplysningar.</translation>
<source>Delete Feed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Deleting Audio...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Superfeed</source>
<translation type="unfinished"></translation>
@ -4830,6 +4834,10 @@ Klikk på &quot;Lisens&quot;-knappen for fleire opplysningar.</translation>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Deleting remote audio...</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ListGpis</name>

View File

@ -1323,10 +1323,6 @@ files, causing any whose files remain to be imported again.</source>
<source>Feed: </source>
<translation type="unfinished">Feed: </translation>
</message>
<message>
<source>Key Name:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Title:</source>
<translation type="unfinished">Título:</translation>
@ -1544,6 +1540,22 @@ Feeds</source>
<source>Images</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Author:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Owner Name:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Owner E-Mail:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Channel contains explicit content</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditFeedPerms</name>
@ -4929,14 +4941,6 @@ Você ainda quer Deletar?</translation>
<source>Delete Feed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Deleting Audio...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Superfeed</source>
<translation type="unfinished"></translation>
@ -4953,6 +4957,10 @@ Você ainda quer Deletar?</translation>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Deleting remote audio...</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ListGpis</name>

View File

@ -41,6 +41,19 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
//
// Revert 326
//
if((cur_schema==326)&&(set_schema<cur_schema)) {
DropColumn("PODCASTS","ITEM_EXPLICIT");
DropColumn("FEEDS","CHANNEL_EXPLICIT");
DropColumn("FEEDS","CHANNEL_OWNER_EMAIL");
DropColumn("FEEDS","CHANNEL_OWNER_NAME");
DropColumn("FEEDS","CHANNEL_AUTHOR");
WriteSchemaVersion(--cur_schema);
}
//
// Revert 325
//

View File

@ -160,7 +160,8 @@ void MainObject::InitializeSchemaMap() {
global_version_map["3.1"]=310;
global_version_map["3.2"]=311;
global_version_map["3.3"]=314;
global_version_map["3.4"]=325;
global_version_map["3.4"]=317;
global_version_map["3.5"]=326;
}

View File

@ -10063,6 +10063,36 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
WriteSchemaVersion(++cur_schema);
}
if((cur_schema<326)&&(set_schema>cur_schema)) {
sql=QString("alter table FEEDS add column CHANNEL_AUTHOR varchar(64) ")+
"after CHANNEL_EDITOR";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table FEEDS add column CHANNEL_OWNER_NAME varchar(64) ")+
"after CHANNEL_AUTHOR";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table FEEDS add column ")+
"CHANNEL_OWNER_EMAIL varchar(64) after CHANNEL_OWNER_NAME";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table FEEDS add column CHANNEL_EXPLICIT enum('N','Y') ")+
"not null default 'N' after CHANNEL_LANGUAGE";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table PODCASTS add column ITEM_EXPLICIT enum('N','Y') ")+
"not null default 'N' after ITEM_SOURCE_URL";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
WriteSchemaVersion(++cur_schema);
}
// NEW SCHEMA UPDATES GO HERE...