Last active
January 15, 2024 14:29
-
-
Save stevewithington/4742829 to your computer and use it in GitHub Desktop.
Mura CMS: Example of how to import content into Mura CMS from an RSS feed. Place the file under your Mura root. For example: http://yourdomain.com/temp/import/index.cfm. Also see https://gist.github.com/stevewithington/5051646 to importUsersViaCSV
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<cfscript> | |
param name='form.rssurl' default='http://www.npr.org/rss/rss.php?id=1014'; | |
param name='form.parentfilename' default='blog'; | |
param name='form.isSubmitted' default='false'; | |
param name='form.istest' default='true'; | |
param name='form.siteid' default='default'; | |
$ = application.serviceFactory.getBean('$').init(form.siteid); | |
if ( !$.currentUser().isSuperUser() && !$.currentUser().isInGroup('admin') ) { | |
WriteOutput('<h3>You should not be here.</h3>'); | |
abort; | |
} | |
utility = $.getBean('contentUtility'); | |
parent = $.getBean('content').loadBy(filename=form.parentfilename); | |
parentid = parent.getContentID(); | |
rsSites = $.getBean('settingsManager').getList(); | |
</cfscript> | |
<cfoutput> | |
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="utf-8"> | |
<cfheader name="expires" value="#dateformat(now(), 'ddd, dd mmm yyyy')# #timeformat(now(), 'HH:mm:ss tt')#"> | |
<cfheader name="pragma" value="no-cache"> | |
<cfheader name="cache-control" value="no-cache, no-store"> | |
<meta http-equiv="pragma" content="no-cache"> | |
<meta http-equiv="Expires" content="#dateformat(now(), 'ddd, dd mmm yyyy')# #timeformat(now(), 'HH:mm:ss tt')#"> | |
<title>Mura CMS: Import Content From RSS Feed</title> | |
<cfif IsValid('url', form.rssurl)> | |
<cffeed source="#form.rssurl#" action="read" name="theFeed" /> | |
</cfif> | |
<style type="text/css"> | |
.wrap { | |
clear:both; | |
display:block; | |
padding:1em; | |
margin:1em; | |
border:1px dashed grey; | |
font-family:Arial, Helvetica, sans-serif; | |
font-size:0.8em; | |
} | |
.wrap label, .wrap input { | |
clear:both; | |
display:block; | |
} | |
.wrap label { | |
padding:1em 0 0 0; | |
} | |
</style> | |
</head> | |
<body> | |
<div class="wrap"> | |
<h2>Import Content Into Mura CMS Via RSS</h2> | |
<cfif form.isSubmitted and IsDefined('theFeed')> | |
<cfscript> | |
items = theFeed.item; | |
errors = []; | |
</cfscript> | |
<cfif parent.getIsNew()> | |
<h3>ERROR! Parent filename does not exist.</h3> | |
<p><a href="#CGI.script_name##CGI.query_string#">Return to form ></a></p> | |
<cfabort /> | |
</cfif> | |
<cfif form.istest> | |
<h3>Test Results <a href="#CGI.script_name##CGI.query_string#">Return to form ></a></h3> | |
</cfif> | |
<cfloop array="#items#" index="i"> | |
<!--- <cfdump var="#i#" abort="true" /> ---> | |
<cfscript> | |
// content = $.getBean('content').loadBy(filename = '#form.parentfilename#/' & utility.formatFilename(i.title)); | |
content = $.getBean('content').loadBy(remoteid = i.link); | |
content.setTitle(i.title); | |
content.setMenuTitle(''); | |
content.setURLTitle(''); | |
content.setHTMLTitle(''); | |
content.setApproved(1); | |
content.setIsNav(0); | |
content.setParentID(parentid); | |
content.setRemoteID(i.link); | |
if ( StructKeyExists(i.description, 'value') ) { | |
content.setBody(i.description.value); | |
} | |
if ( StructKeyExists(i, 'pubDate') ) { | |
content.setReleaseDate(i.pubDate); | |
} | |
//content.delete(); | |
if ( !form.istest ) { | |
content.save(); | |
if ( !StructIsEmpty(content.getErrors()) ) { | |
ArrayAppend(errors, content.getErrors()); | |
} | |
} | |
</cfscript> | |
<cfif form.istest> | |
<h4>#HTMLEditFormat(content.getValue('title'))#</h4> | |
<cfdump var="#i#" label="feed values" /> | |
<cfdump var="#content.getAllValues()#" label="content" /> | |
</cfif> | |
</cfloop> | |
<h3>Completed! <a href="#CGI.script_name##CGI.query_string#">Return to form ></a></h3> | |
<cfif ArrayLen(errors)> | |
<h4>ERRORS</h4> | |
<cfdump var="#errors#" label="ERRORS" /> | |
</cfif> | |
<cfelse> | |
<form name="frmSessions" method="post"> | |
<label for="rssurl">RSS URL:</label> | |
<input type="text" name="rssurl" id="rssurl" value="#form.rssurl#" size="80" /> | |
<label for="siteid">Site ID:</label> | |
<select name="siteid"> | |
<cfloop query="rsSites"> | |
<option value="#siteid#"<cfif form.siteid eq siteid> selected="selected"</cfif>>#HTMLEditFormat(site)#</option> | |
</cfloop> | |
</select> | |
<label for="parentfilename">Parent Filename:</label> | |
<input type="text" name="parentfilename" id="parentfilename" value="#form.parentfilename#" size="80" /> | |
<label for="istest">Test?</label> | |
<select name="istest"> | |
<option value="true"<cfif form.istest> selected="selected"</cfif>>Yes</option> | |
<option value="false"<cfif !form.istest> selected="selected"</cfif>>No</option> | |
</select> | |
<input type="hidden" name="isSubmitted" value="true" /> | |
<p><input type="submit" value="Submit" /></p> | |
</form> | |
</cfif> | |
</div> | |
</body> | |
</html> | |
</cfoutput> |
Don't include this file into any content! This file is meant to be an example of how you could import content into Mura. You could take the file, create an actual directory in your file system called something like 'temp' or 'import' and then place this file in there as 'index.cfm' or something like that.
Then you should be able to navigate directly to that file such as http://yourdomain.com/import/index.cfm
Make sense?
Thanks that worked great.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I get a No matching property [PERM] found in [string] at railo.runtime.reflection.Reflector.getGetter(Reflector.java:779): and maximal dump level reached when I use this. I use
[mura]$.dspInclude('site_custom/muraImportContentFromRSS.cfm')[/mura]
to put the file in a page expecting a form but just the error. Can you recommend something??