Updated comments and Readme

Added comments and credits and updated README
This commit is contained in:
colymba 2012-07-18 15:23:51 +03:00
parent 56a4bb4681
commit 1ac1c88cd6
3 changed files with 63 additions and 32 deletions

View File

@ -2,7 +2,7 @@ GridFieldBulkImageUpload
======================== ========================
SilverStripe 3 GridField component for uploading images in bulk into the managed DataObject relation, with option to edit fields on the fly. SilverStripe 3 GridField component for uploading images in bulk into the managed DataObject relation, with option to edit fields on the fly.
This component is built around the CMSFileAddController editForm, it overrides and adds some behaviors, templates and styles. This component takes bit and pieces around from CMSFileAddController, GridFieldDetailForm_ItemRequest, UploadField, and it overrides and adds some behaviors, templates and styles.
## Requirments ## Requirments
* SilverStripe 3.0 * SilverStripe 3.0
@ -20,8 +20,8 @@ Simplest usage, add the component to your GridField as below. The component will
## Usage 2 ## Usage 2
Same as 1 but you can specify which Image field to use and which fields are editable Same as 1 but you can specify which Image field to use and which fields are editable
$imageField: The name of the image field to use (should have 'ID' at the end: If your relation is set has 'MyImage' => 'Image', the parameter should be 'MyImageID') $imageField: string: The name of the image field to use (should have 'ID' at the end: If your relation is set has 'MyImage' => 'Image', the parameter should be 'MyImageID')
$editableFields: An array of db fields name that will be editable like array('myTextField', 'myVarcharField', 'myEnumField') $editableFields: array: list of db fields name as string that will be editable like: array('myTextField', 'myVarcharField', 'myEnumField')
:::php :::php
$config->addComponent(new GridFieldBulkImageUpload( $imageField, $editableFields )); $config->addComponent(new GridFieldBulkImageUpload( $imageField, $editableFields ));
@ -30,5 +30,8 @@ $editableFields: An array of db fields name that will be editable like array('my
* The HTML form fields for each editable fields are taken from the DataObject's getCMSFields() method * The HTML form fields for each editable fields are taken from the DataObject's getCMSFields() method
* Only (HTML)Text/Varchar and Enum fields are picked up by the automatic config * Only (HTML)Text/Varchar and Enum fields are picked up by the automatic config
## TODO ## @TODO
* Add option to specify upload folder * Add option to specify upload folder
* Styles: fade back progress to blue once updated
* Handle and display errors better for: creation, update, cancel
* Make it work not only for images -> might need to rename this component then?

View File

@ -1,23 +1,27 @@
<?php <?php
/**
class GridFieldBulkImageUpload implements GridField_HTMLProvider, GridField_URLHandler { /*GridField_ActionProvider,*/ * GridField component for uploading images in bulk
*/
class GridFieldBulkImageUpload implements GridField_HTMLProvider, GridField_URLHandler {
/** /**
* Target record Image foreign key field name * Target record Image foreign key field name
* @var String *
* @var string
*/ */
protected $recordImageFieldName; protected $recordImageFieldName;
/** /**
* Target record editablez fields * Target record editable fields
* @var Array *
* @var array
*/ */
protected $recordEditableFields; protected $recordEditableFields;
/** /**
* *
* @param String $imageField * @param string $imageField
* @param String/Array $editableFields * @param string/array $editableFields
*/ */
public function __construct($imageField = null, $editableFields = null) public function __construct($imageField = null, $editableFields = null)
{ {
@ -29,7 +33,7 @@ class GridFieldBulkImageUpload implements GridField_HTMLProvider, GridField_URLH
/** /**
* *
* @param String $field * @param string $field
*/ */
function setRecordImageField($field) function setRecordImageField($field)
{ {
@ -38,7 +42,7 @@ class GridFieldBulkImageUpload implements GridField_HTMLProvider, GridField_URLH
/** /**
* *
* @param Array $fields * @param array $fields
*/ */
function setRecordEditableFields($fields) function setRecordEditableFields($fields)
{ {
@ -47,7 +51,7 @@ class GridFieldBulkImageUpload implements GridField_HTMLProvider, GridField_URLH
/** /**
* *
* @return type * @return string
*/ */
public function getRecordImageField() public function getRecordImageField()
{ {
@ -56,7 +60,7 @@ class GridFieldBulkImageUpload implements GridField_HTMLProvider, GridField_URLH
/** /**
* *
* @return type * @return string
*/ */
public function getRecordEditableFields() public function getRecordEditableFields()
{ {
@ -66,7 +70,7 @@ class GridFieldBulkImageUpload implements GridField_HTMLProvider, GridField_URLH
/** /**
* *
* @param GridField $gridField * @param GridField $gridField
* @return Array * @return array
*/ */
public function getHTMLFragments($gridField) { public function getHTMLFragments($gridField) {
@ -83,7 +87,7 @@ class GridFieldBulkImageUpload implements GridField_HTMLProvider, GridField_URLH
/** /**
* *
* @param GridField $gridField * @param GridField $gridField
* @return Array * @return array
*/ */
public function getURLHandlers($gridField) { public function getURLHandlers($gridField) {
return array( return array(
@ -92,10 +96,11 @@ class GridFieldBulkImageUpload implements GridField_HTMLProvider, GridField_URLH
} }
/** /**
* Pass control over to the RequestHandler
* *
* @param type $gridField * @param GridField $gridField
* @param type $request * @param SS_HTTPRequest $request
* @return type * @return mixed
*/ */
public function handleBulkUpload($gridField, $request) public function handleBulkUpload($gridField, $request)
{ {

View File

@ -1,5 +1,12 @@
<?php <?php
/**
* Handles request from the GridFieldBulkImageUpload component
*
* Handles:
* * Form creation
* * file upload
* * editing and cancelling records
*/
class GridFieldBulkImageUpload_Request extends RequestHandler { class GridFieldBulkImageUpload_Request extends RequestHandler {
/** /**
@ -21,6 +28,7 @@ class GridFieldBulkImageUpload_Request extends RequestHandler {
protected $controller; protected $controller;
/** /**
* Cache the records FieldList from getCMSfields()
* *
* @var FieldList * @var FieldList
*/ */
@ -50,8 +58,10 @@ class GridFieldBulkImageUpload_Request extends RequestHandler {
/** /**
* Returns the URL for this RequestHandler * Returns the URL for this RequestHandler
* *
* @param String $action * @author SilverStripe
* @return String * @see GridFieldDetailForm_ItemRequest
* @param string $action
* @return string
*/ */
public function Link($action = null) { public function Link($action = null) {
return Controller::join_links($this->gridField->Link(), 'bulkimageupload', $action); return Controller::join_links($this->gridField->Link(), 'bulkimageupload', $action);
@ -108,7 +118,7 @@ class GridFieldBulkImageUpload_Request extends RequestHandler {
} }
/** /**
* Return a list of the GridField managed DataObject (HTML)Text, (HTML)Varchar and Enum fields * Return a list of the GridField managed DataObject's editable fields: (HTML)Text, (HTML)Varchar and Enum fields
* *
* @return array * @return array
*/ */
@ -130,6 +140,7 @@ class GridFieldBulkImageUpload_Request extends RequestHandler {
/** /**
* Return the CMS edit field for a given name. As set in the GridField managed DataObject getCMSFields method * Return the CMS edit field for a given name. As set in the GridField managed DataObject getCMSFields method
*
* @param string $fieldName * @param string $fieldName
* @return FormField * @return FormField
*/ */
@ -145,7 +156,8 @@ class GridFieldBulkImageUpload_Request extends RequestHandler {
/** /**
* Default and main action that returns the upload form etc... * Default and main action that returns the upload form etc...
* @return String Form HTML ??? *
* @return string Form's HTML
*/ */
public function index() public function index()
{ {
@ -229,8 +241,14 @@ class GridFieldBulkImageUpload_Request extends RequestHandler {
* Create new DataObject and add image relation * Create new DataObject and add image relation
* returns Image data and editable Fields forms * returns Image data and editable Fields forms
* *
* Overides UploadField's upload method by Zauberfisch
* Kept original file upload/processing but removed unessesary processing
* and adds DataObject creation and editableFields processing
*
* @author Zauberfisch original upload() method
* @see UploadField->upload()
* @param SS_HTTPRequest $request * @param SS_HTTPRequest $request
* @return \SS_HTTPResponse * @return string json
*/ */
public function upload(SS_HTTPRequest $request) public function upload(SS_HTTPRequest $request)
{ {
@ -315,7 +333,7 @@ class GridFieldBulkImageUpload_Request extends RequestHandler {
* Update a record with the newly edited fields * Update a record with the newly edited fields
* *
* @param SS_HTTPRequest $request * @param SS_HTTPRequest $request
* @return String * @return string
*/ */
public function update(SS_HTTPRequest $request) public function update(SS_HTTPRequest $request)
{ {
@ -339,7 +357,7 @@ class GridFieldBulkImageUpload_Request extends RequestHandler {
* according to the ID sent from the form * according to the ID sent from the form
* *
* @param SS_HTTPRequest $request * @param SS_HTTPRequest $request
* @return String JSON * @return string json
*/ */
public function cancel(SS_HTTPRequest $request) public function cancel(SS_HTTPRequest $request)
{ {
@ -366,7 +384,7 @@ class GridFieldBulkImageUpload_Request extends RequestHandler {
} }
/** /**
* Simple function taht replace the 'record_XX_' off of the ID field name * Simple function that replace the 'record_XX_' off of the ID field name
* prefix needed since it was taken for a pageID if sent as is as well as fixing other things * prefix needed since it was taken for a pageID if sent as is as well as fixing other things
* *
* @param array $data * @param array $data
@ -401,10 +419,15 @@ class GridFieldBulkImageUpload_Request extends RequestHandler {
} }
/** /**
* Edited version of the GridFieldEditForm function
* adds the 'Bulk Upload' at the end of the crums
*
* CMS-specific functionality: Passes through navigation breadcrumbs * CMS-specific functionality: Passes through navigation breadcrumbs
* to the template, and includes the currently edited record (if any). * to the template, and includes the currently edited record (if any).
* see {@link LeftAndMain->Breadcrumbs()} for details. * see {@link LeftAndMain->Breadcrumbs()} for details.
* *
* @author SilverStripe original Breadcrumbs() method
* @see GridFieldDetailForm_ItemRequest
* @param boolean $unlinked * @param boolean $unlinked
* @return ArrayData * @return ArrayData
*/ */