Moodle PHP filehandeling - file-upload

My problem is that we have made an block that opens a page witha a mform on it. And we use the editor element to start the tinyMCE editor, on the page. But when we save the output, the images oploaded to the text field is only viewable to the admin (the person who uploaded it) and in the mdl_files it sets it to be a draft file. I have been through the documentation, and i might have lost the context on the new page, but im not sure.

In Moodle, files uploaded to a form (either to a filemanager element or a text editor) are stored in a temporary 'draft' area while the form is being edited.
This is so that the actual files are not changed until the form is submitted (e.g. if an admin changed the image embedded in some text, deleting the original, you do not want anyone viewing the page during the editing to see a broken image link).
When working with files embedded in a text editor in Moodle, you need to make sure you copy all existing files into the 'draft' area before you show the form, then copy the 'draft' images into the real area, after the form is submitted.
See https://docs.moodle.org/dev/Using_the_File_API_in_Moodle_forms#editor for details about how to do this.
Please also note that your plugin will also need a PLUGINTYPE_PLUGINNAME_pluginfile() function in its lib.php, in order to authenticate any file requests from the user's browser and return the file contents. See any of the core activities for examples of this (e.g. mod/data/lib.php - function data_pluginfile()).

Related

PDF file link question - can I link to a different page within the same file?

This question is about PDF format files, not JS or HTML. Inside a PDF file, I'd like to create a link to another page within the same file. This is useful for Table of Contents type page that needs to link to other pages. But the "Add Link" item in PDF editor in Acrobat doesn't seem to have this as an option -- only the opening of web links, or "documents" (external files, not the current one), etc. Welcome any pointers.
Of course, that's possible.
In the Link tool, you first set the active area (that's where you click to go to the destination.
In a first dialog, Acrobat asks for the properties of the active area. In the Link Action area, select Go to a page view. After clicking on Next, you get a next dialog, directing you to navigate to the target view (page and zoom factor). Confirm, and you have set up your linkā€¦

How to embed PDF viewer in DSPACE

How can I embed PDF viewer in my DSPACE instance. I have tried many solution but nothing works. There are many suggestion on DSPACE official site
https://wiki.duraspace.org/display/DSPACE/Document+Viewer+Integration
No soluton has a documnetation how to configure these viewer in dspace code.
I want a step wise soultion for embeding PDF Viewer. Please help me out of this problem. Thanks in advance.
I have researched through these site -
https://wiki.duraspace.org/display/DSPACE/Document+Viewer+Integration
http://peterpants.blogspot.com/2010/02/document-preview-in-dspace-using-google.html
It depends which version and which UI of DSpace you are using. I will describe roughly what we did to embed PDF.js into DSpace 6.3 JSPUI. We released all necessary code changes on github, so please take a look over there for details.
DSpace uses maven overlays to separate local code changes from the officially released code. Therefore, I will use paths within these overlays in the following description. If files that we changed do not exists within your local code repository, you have to copy them from there original location within [dspace-source]/dspace-jspui/src/main. It should also work if you do the code changes directly there, but I would consider that bad practice.
We added PDF.js and all files it needs to dspace/modules/jspui/src/main/webapp/static/pdfjs. We then changed dspace/modules/jspui/src/main/java/org/dspace/app/webui/jsptag/ItemTag.java. This class builds the item view. While I wish there would be a better separation of concerns, some HTML code is generated by this class, including the section of the item view that list all bitstreams. For every file that is listed, we check if its mime type is set to application/pdf and add a "preview" button for those files. The preview button links to the html site that renders the pdf viewer and loads the targeted file. We also added an attribute "download" to the default "Open/View" button, to ensure that it does not start another PDF viewer of the browser, but downloads the file. This is important to have one button called "preview" that opens the embeded PDF viewer and one button "download" that downloads the file to the user's computer. You can change the name of the button from "open/view" into "download" in the DSpace's message catalog. Last but not least we added JavaScript to dspace/modules/jpsui/src/main/webapp/display-item.jsp. The JavaScript suppress that the PDF viewer is loaded as a normal site, but loads it as an overlay over the item view, using JQuery UI. Then we wrote a small CSS file that helps us to position that overlay within the item view and referenced that file in dspace/modules/jspui/src/main/webapp/layout/header-default.jsp.
As mentioned above all these changes are published as open source under the DSpace Source Code BSD License on github.

Sensenet upload files to a document library - fields fill

It is possible in the moment of upload a content to a document library show the fields defined (of the document library)? At the moment, the only way that the user have to fill the fields is uploading the document first and then click edit to fill the fields.
Unfortunately there is no out-of-the box solution for this scenario. I agree that this would be useful, but currently you have to create a custom solution.
You will have to create a UI that displays the upload control (you can use the built-in Sense/Net plugin) and also the form fields. In the click event of a button, you have to first start and finish the upload, retrieve the new content id and than update the metadata fields - all this in JavaScript. This way users would not see the difference, for them this would be a single operation.
(in mid-term we plan to offer a built-in control that will make this possible, but we do not have a timeline for this feature)

ZF2 - How to Save Uploaded File when Form is not Valid on Submit

I have a form in ZF2 where, for example, a text box and a file input box are included. What about when the form is not valid because the text box, for example, is required and user leave it blank, how can I save on the form the previously uploaded file so that it will not be uploaded again and again when the form is invalid?
Regards,
Eli
As of ZF2.1 (I think), there is support for this via the post-redirect-get plugin. The relevant documentation is here:
http://zf2.readthedocs.org/en/latest/modules/zend.form.file-upload.html#file-post-redirect-get-plugin
When you cannot separate the forms, the File Post-Redirect-Get
Controller Plugin can be used to manage the file inputs and save off
valid uploads until the entire form is valid.
You could use Validation groups to validate the none-file fields separately from the file input fields:
http://framework.zend.com/manual/2.0/en/modules/zend.form.quick-start.html#validation-groups

Saving the modified contents of a pdf

I've got a form that I downloaded, I'd like to prefill some content on the form (this is easy using cfpdfform).
Where it gets tricky is I would like to allow the user to modify the contents of that form, and then somehow have those modified contents accessible to me. I didnt build the source PDF so I dont know how to allow the user to "save" the new contents so they can be read.
Any ideas on where I might start on this one?
You can also use the cfpdfform tag to read/write data to a PDF file which has a form. The important thing is that the PDF document already have the form fields available, or that you add them.
I just recently completed a task where I had to have a user fill out a normal web form, and then create a filled version of an existing PDF document. It worked like a breeze!
I think that depending on what you are trying to accomplish, having the user fill out the data in a web form is less confusing than serving up a PDF and expecting them to save that to update a file on a remote server. Just my opinion, though.
http://www.cfquickdocs.com/cf8/?getDoc=cfpdfform#cfpdfform
It's possible for users to complete most PDF forms in Adobe Reader, but when user's try to save the changes they get a popup prompting them that the PDF cannot be saved and would need to upgrade to Adobe Acrobat to have this functionality.
Since Acrobat 7 (or possibly) 8 it's possible to create a form so that it can be completed and saved in reader. In Acrobat open your PDF, and select Advanced -> Enable usage right in reader from the menu. This will prompt you to save the form and then anyone using Adobe reader can complete it.
Once that's done you can open the form in ColdFusion, populate some of the fields and serve it up to the user. Once they fill it in, save it and get it back in ColdFusion you can read the contents using the PDF related tags.
Please note: It's currently not possible to set the "enable usage rights in reader" flag from ColdFusion, you need a copy of Adobe Acrobat or access to Adobe LifeCycle server to do this.
This document may help you:
http://www.adobe.com/education/instruction/teach/coldfusion/CF8-2_advanced_cf8_development_unit8.pdf