Mura CMS - Access Local Index items programmatically - coldfusion

I have created a local index for the purpose of user being able to upload images for an image gallery. I just want to be able to access the images from within that local index, but can't work out how to access the contents of the local index.
I have been able to get the index with: $.getBean("feedManager").read('F78748AB-BADD-5E7F-86890BE17C0E11E8').
With this, I can see the appropriate properties for the local index, however I can't see, nor find a way to access the content items within that feed. In particular, I just want to be able to get to the related image for each item.
I am able to view the items via the RSS feed.
Many Thanks in advance for any pointers.
Jason

feed = $.getBean("feedManager").read('F78748AB-BADD-5E7F-86890BE17C0E11E8')
Your code returns you the feedBean for your local index. The next step is to ask the feedBean for the content. The content can be returned in two formats: a Query object or an Iterator.
Query:
feed.getQuery();
Iterator:
feed.getIterator();
If you ask for the query format you can loop over it using the 'cfloop'-tag with the 'query'-attribute.
If you ask for the iterator this documentation will help you looping over an iterator in Mura (the documentation if for a content iterator, but the concept is the same):
http://docs.getmura.com/developer-guides/back-end-development/content-iterator/

Related

Mapping user spreadsheet columns to database fields

I’m not sure where to start on this project. I know how to read the contents of the excel spreadsheet, I know how to identify the header row, I know how to loop over the contents. I believe I have the UX portion worked out but I am not sure how to process the data.
I’ve googled and only found .Net solutions but I’m looking for a ColdFusion/Lucee solution.
I have a working form allowing me to map a user's spreasheet column to my database values (this is being kept simple for this post; user does not have direct access to the database).
Now that I have my data, I'm not sure how to loop over the data results. I believe there will be several loops (an outer and an inner). Then of course I also need to loop over the file contents but I think if I can get the headings mapped out,I can figure out the remaining.
Any good links, tutorials, or guides would be greatly appreciated.
Some pseudo code might be enough to get me started.
User uploads form
System reads headers and content.
User is presented form with a list of columns from their uploaded spreadsheet to match with available database fields (eg “column1” matches “customer name”.
User submits form.
Now what?
UPDATED
Here is what the data looks like AFTER the mapping has been done in my form. The column deliiter is the ::: and within the column the ||| indicates the ID associated with the selected column value. I've included the id and the column value since I plan on displaying the mapping again as a confirmation. Having the ID saves a trip to the database.
If I understand correctly, your question is: how do you provide the user a form allowing them to map their spreadsheet columns to that of the database
Since you have their spreadsheet column names, and you have the database column names, then this problem is essentially a UI/UX problem. You need to show both lists, and allow the user to map them. I can imagine several approaches to this. My first thought would be some sort of drag/drop operation, as follows:
Create a list of boxes, one for each field in your database table, and include the field name in (or above) the box. I'll call this the db field list. Then, create another list for each column from the spreadsheet, which I'll call the spreadsheet column list. The user would drag/drop items from the spreadsheet column list to the db field list.
When a mapping has been completed by the user, you would store the column/field names in as data for the DOM element of the db field list box. Then upon submission, you would acquire the mapping data by visiting each box and adding it to an array. Then you would serialize that array into JSON and send that to your form submission handler.
This could be difficult or easy, depending on your knowledge of UI implementations using JavaScript. jQuery makes this easy (if you know jQuery). There's even a jquery UI plugin that does this: https://jqueryui.com/droppable/.
A quick search for javascript drag drop would help, and here's a few articles I found:
https://www.w3schools.com/html/html5_draganddrop.asp
https://medium.com/quick-code/simple-javascript-drag-drop-d044d8c5bed5
You would also need to submit the array of mappings using javascript. You could search for that as well, and here's an article I found:
https://codereview.stackexchange.com/questions/94493/submit-an-array-as-an-html-form-value-using-javascript

Storing and retrieving a large list in Ionic 2+

I aim to use the native storage plugin to store a potentially large list of objects in Ionic 3. I want to be able to then display the list in an Ionic infinite scrolling list. I presume that if I save the entire list to storage as a single object, with a single key, it will take quite some time to retrieve it, and the list page will remain empty for some time while the list is read asynchronously from storage.
Should I be saving each item in the list with an individual key, such as "key.1", "key.2", "key.3" etc, and then retrieving a "pageful" of items at a time, supported by the infinite scrolling list? The nuisance part of this is that when I want to add a new item to the list, I have to know what key number I'm up to, so I can generate the next key name.
What's the best practice for this scenario? Is there a better way to load a large list from memory asynchronously so that it can be displayed to the user as soon as possible?
I ended up storing my items in a table in a SQLite database, as I wanted to avoid the size limitations that local storage can impose. I use a query like SELECT * FROM submissions LIMIT ? OFFSET ? to fetch a pageful of items at a time from the doInfinite function of an Ionic infinite scroller, keeping track of what page I'm up to and passing that into the OFFSET parameter. The LIMIT argument is the number of rows to fetch for a page, e.g. 10.

Select Sitecore archived items directly

Sitecore.Context.Database.Archives["archive"].GetEntries(pageIndex, pageSize)
statement is returning ArchiveEntry list that is not what I want, instead I need the actual Items to be retrieved.
How can I get the Sitecore Items from the archive list?
You can't. Those items are archived. That means that you cannot access them directly and you cannot access their custom fields. You need to restore them first using:
Sitecore.Context.Database.Archives["archive"].RestoreItem(archivalId)
This is similar like using recycle bin in Windows - you move files there and you can not edit them unless you restore them back.

Looping through data over multiple pages in Django

I'm trying to find the best way to go about my problem and I would love your input. I am trying to allow users to scan multiple barcodes into a text area. After they are submitted they are split into an array. The user then inputs how many iterations of each value in the array are to be inserted into a MySQL database. I've achieved this using PHP and session variables, looping through the array one step at a time. With Django I've found it a little more difficult and I am wondering if I should just have a "temporary" table in my database that gets refilled with the values from the array of barcodes. The following pages then pull each value from the table instead of using any sort of session variables.
Edit:
I apologize for the confusing question. Let me try and clear it up a bit:
I need to render a view based on each value in the user-submitted array. When it is first submitted, a view is rendered for the first value. When the user hits "Next" a view will be rendered for the second value in the array, and so on.
As for the database issue, each value can have two "types." The user will declare how many of each type is added to the database in each of the views I am trying to render.
Thank you.
this is nothing about django.
forget that temporary table.
add a field "filled" to ur table
select 1st not-filled row, and show "refill" page by this row
then update user input number back to db, set "filled" to "true" at same time.
You probably can port your PHP solution using a Django session object.
I'm not sure if that "one item at a time" is a feature or a "it was easier to code that way" thing, but in the second case - you may want to use Django Formsets to display all items at once and avoid looping through the array.

How to link a SharePoint list with a Word form?

I want to store Word forms into a library and then use them to populate with data from a SharePoint list. Push data from the list to the forms, by selecting one of them.
Has anyone do it? is there a simple way?
This sounds like a mail merge kind of operation. Mail merge does not work with datasources with a HTTP path. The workaround to this is to map the document library as a network drive. When performing mail merge in Word, you would then select the drive as the source.
See Q 14 in this link for more info
[]: http://support.microsoft.com/kb/826838
Each list can only (I think) 1 form that is used as the template document.
Make secondary lists for each Word form.
If you have a primary input list, then a workflow that recreates a list copy in the secondary list as per the required form.
This should force the secondary lists to populate data onto the form as per each type, then save the form back to your primary list.
A bit out of the way, but should be able to be done.
You can use word (2007/2010) quick parts to pull metadata from SharePoint, but it works only if you use document library and not a list.