Browse Source

Merge branch 'master' of github.com:Islandora/islandora into collection-admin

pull/2/head
Alexander O'Neill 14 years ago
parent
commit
0566e74e6d
  1. 204
      form_elements/islandora_form_elements.module
  2. 10
      plugins/ImageManipulation.inc
  3. 2
      workflow_client/plugins/image_resize.inc

204
form_elements/islandora_form_elements.module

@ -25,6 +25,12 @@ function islandora_form_elements_elements() {
'#process' => array('ife_sticky_textarea_process'), '#process' => array('ife_sticky_textarea_process'),
); );
$type['select'] = array(
'#input'=> TRUE,
'#sticky ' => FALSE,
'#process' => array('ife_sticky_select_process'),
);
$type['list'] = array( $type['list'] = array(
'#input'=>TRUE, '#input'=>TRUE,
'#element_validate' => array('ife_list_validate'), '#element_validate' => array('ife_list_validate'),
@ -57,19 +63,19 @@ function islandora_form_elements_elements() {
$type['person'] = array( $type['person'] = array(
'#input' => TRUE, '#input' => TRUE,
'#process' => array('ife_person_process'), '#process' => array('ife_person_process'),
'#default_value' => array('fname'=>'', 'lname' => '', 'title' => '', 'role' => ''), '#default_value' => array('name'=>'', 'date'=>'', 'subject'=>'', 'role' => ''),
); );
$type['organization'] = array( $type['organization'] = array(
'#input' => TRUE, '#input' => TRUE,
'#process' => array('ife_org_process'), '#process' => array('ife_org_process'),
'#default_value' => array( 'organization' => '', 'conference' => ''), '#default_value' => array( 'organization' => '', 'date'=>'', 'subject'=>'', 'role' => ''),
); );
$type['conference'] = array( $type['conference'] = array(
'#input' => TRUE, '#input' => TRUE,
'#process' => array('ife_conf_process'), '#process' => array('ife_conf_process'),
'#default_value' => array( 'conference' => ''), '#default_value' => array( 'conference' => '', 'date'=>'', 'subject'=>'', 'role' => ''),
); );
$type['people'] = array( $type['people'] = array(
@ -79,6 +85,7 @@ function islandora_form_elements_elements() {
$type['datepicker'] = array( $type['datepicker'] = array(
'#input' => TRUE, '#input' => TRUE,
'#process' => array('ife_datepicker_process'),
); );
return $type; return $type;
@ -140,7 +147,7 @@ function ife_people_process($element,$edit,&$form_state)
$people= array(); $people= array();
if (isset($form_state['storage']['people']) && !empty($form_state['storage']['people'])) { if (isset($form_state['storage']['people']) && !empty($form_state['storage']['people'])) {
foreach ($form_state['storage']['people'] as $ent) { foreach ($form_state['storage']['people'] as $ent) {
if ( trim($ent['fname']) != '' || trim($ent['lname']) != '' || trim($ent['organization']) != '' || trim($ent['title']) != '' || trim($ent['conference']) != '' || trim($ent['role']) != '' || trim($ent['date']) != '') { if ( trim($ent['name']) != '' || trim($ent['organization']) != '' || trim($ent['conference']) != '' || trim($ent['role']) != '' || trim($ent['date']) != '') {
$people[]=$ent; $people[]=$ent;
} }
} }
@ -154,20 +161,21 @@ function ife_people_process($element,$edit,&$form_state)
switch ($json->type) switch ($json->type)
{ {
case 'personal': case 'personal':
$person['fname']=$json->given; $person['name']=$json->name;
$person['lname']=$json->family;
$person['title']=$json->title;
$person['role']=$json->role; $person['role']=$json->role;
$person['subject']=$json->subject;
$person['date']=$json->date; $person['date']=$json->date;
break; break;
case 'organization': case 'organization':
$person['organization'] = $json->name; $person['organization'] = $json->name;
$person['role'] = $json->role; $person['role'] = $json->role;
$person['subject']=$json->subject;
break; break;
case 'conference': case 'conference':
$person['conference'] = $json->name; $person['conference'] = $json->name;
$person['role'] = $json->role; $person['role'] = $json->role;
$person['date'] = $json->date; $person['date'] = $json->date;
$person['subject']=$json->subject;
break; break;
} }
@ -185,7 +193,7 @@ function ife_people_process($element,$edit,&$form_state)
} }
} else { } else {
$form_state['storage']['people']=array( array('fname'=>'','lname'=>'', 'title'=>'', 'role'=>'', 'date'=>'')); $form_state['storage']['people']=array( array('name'=>'', 'role'=>'', 'date'=>'', 'subject' => ''));
} }
} }
@ -273,30 +281,18 @@ function ife_person_process($element)
if (!isset($element['#value'])) if (!isset($element['#value']))
{ {
$element['#value'] = array('fname'=>'', 'lname' => ''); $element['#value'] = array('name'=>'');
} }
$element['fname'] = array( $element['name'] = array(
'#type' => 'textfield', '#type' => 'textfield',
'#title'=> t('Given Name(s)'), '#title'=> t('Name(s)'),
'#size' => 30, '#size' => 30,
'#value' => $element['#value']['fname'], '#value' => $element['#value']['name'],
'#description' => t('Please enter last name first, followed by a comma and first name.'),
); );
$element['lname'] = array(
'#type' => 'textfield',
'#title' => t('Family Name(s)'),
'#size' => 30,
'#value' => $element['#value']['lname'],
);
$element['title'] = array(
'#type' => 'textfield',
'#title' => t('Title'),
'#size' => 30,
'#value' => $element['#value']['title'],
);
$element['date'] = array( $element['date'] = array(
'#type' => 'datepicker', '#type' => 'datepicker',
@ -314,6 +310,14 @@ function ife_person_process($element)
'#autocomplete_path' => 'autocomplete_marcrelator/', '#autocomplete_path' => 'autocomplete_marcrelator/',
); );
$element['subject'] = array(
'#type' => 'checkbox',
'#size'=>30,
'#description'=>t('If checked, this person will be listed as a subject term. If selected, role field does not apply.'),
'#title' => t('Subject'),
'#value' => $element['#value']['subject'],
);
$element['remove'] = array( $element['remove'] = array(
'#type' => 'submit', '#type' => 'submit',
@ -339,7 +343,7 @@ function ife_org_process($element)
if (!isset($element['#value'])) if (!isset($element['#value']))
{ {
$element['#value'] = array('fname'=>'', 'lname' => ''); $element['#value'] = array('name'=>'');
} }
@ -352,6 +356,14 @@ function ife_org_process($element)
'#autocomplete_path' => 'autocomplete_marcrelator/', '#autocomplete_path' => 'autocomplete_marcrelator/',
); );
$element['subject'] = array(
'#type' => 'checkbox',
'#size'=>30,
'#description'=>t('If checked, this organization will be listed as a subject term. If selected, role field does not apply.'),
'#title' => t('Subject'),
'#value' => $element['#value']['subject'],
);
$element['organization'] = array( $element['organization'] = array(
'#type' => 'textfield', '#type' => 'textfield',
'#title' => t('Organization'), '#title' => t('Organization'),
@ -384,7 +396,7 @@ function ife_conf_process($element)
if (!isset($element['#value'])) if (!isset($element['#value']))
{ {
$element['#value'] = array('fname'=>'', 'lname' => ''); $element['#value'] = array('name'=>'');
} }
@ -396,6 +408,13 @@ function ife_conf_process($element)
'#autocomplete_path' => 'autocomplete_marcrelator/', '#autocomplete_path' => 'autocomplete_marcrelator/',
); );
$element['subject'] = array(
'#type' => 'checkbox',
'#size'=>30,
'#description'=>t('If checked, this conference will be listed as a subject term. If selected, role field does not apply.'),
'#title' => t('Subject'),
'#value' => $element['#value']['subject'],
);
$element['conference'] = array( $element['conference'] = array(
'#type' => 'textfield', '#type' => 'textfield',
@ -454,6 +473,30 @@ function ife_sticky_textfield_process($element,$edit,&$form_state)
return $element; return $element;
} }
/**
* Our process callback to expand the control.
*/
function ife_datepicker_process($element,$edit,&$form_state)
{
if (isset($element['#sticky']) && $element['#sticky'] == TRUE)
{
$stickyName = preg_replace('/\]/','',array_pop(preg_split('/\[/',$element['#name']))).'-sticky';
if (isset($element['#post'][$stickyName]) && strtolower($element['#post'][$stickyName]) == 'on')
{
$form_state['storage'][$element['#name']]=$element['#value'];
} elseif (isset($form_state['storage'][$element['#name']]))
{
$element['#value'] = $form_state['storage'][$element['#name']];
$element['#sticky_on'] = TRUE;
}
}
return $element;
}
/** /**
@ -481,6 +524,32 @@ function ife_sticky_textarea_process($element,$edit,&$form_state)
return $element; return $element;
} }
/**
* Our process callback to expand the control.
*/
function ife_sticky_select_process($element,$edit,&$form_state)
{
if (isset($element['#sticky']) && $element['#sticky'] == TRUE)
{
$element['#type'] = 'sticky_select';
$stickyName = preg_replace('/\]/','',array_pop(preg_split('/\[/',$element['#name']))).'-sticky';
if (isset($element['#post'][$stickyName]) && strtolower($element['#post'][$stickyName]) == 'on')
{
$form_state['storage'][$element['#name']]=$element['#value'];
} elseif (isset($form_state['storage'][$element['#name']]))
{
$element['#value'] = $form_state['storage'][$element['#name']];
$element['#sticky_on'] = TRUE;
}
}
return $element;
}
/** /**
* Our process callback to expand the control. * Our process callback to expand the control.
*/ */
@ -488,6 +557,27 @@ function ife_copyright_process($element,$edit,&$form_state) {
module_load_include('inc','islandora_form_elements','includes/creative_commons'); module_load_include('inc','islandora_form_elements','includes/creative_commons');
if (isset($element['#sticky']) && $element['#sticky'] == TRUE)
{
$stickyName = preg_replace('/\]/','',array_pop(preg_split('/\[/',$element['#name']))).'-sticky';
if (isset($element['#post'][$stickyName]) && strtolower($element['#post'][$stickyName]) == 'on')
{
$form_state['storage'][$element['#name']]=$element['#value'];
} elseif (isset($form_state['storage'][$element['#name']]))
{
$element['#value'] = $form_state['storage'][$element['#name']];
$element['#sticky_on'] = TRUE;
}
}
if ($element['#sticky']) {
$path=drupal_get_path('module','islandora_form_elements');
drupal_add_css($path.'/css/sticky.css');
$stickyName = preg_replace('/\]/','',array_pop(preg_split('/\[/',$element['#name']))).'-sticky';
$sticky = (isset($element['#sticky']) && $element['#sticky'] == TRUE?'<input class="sticky" type="checkbox" name="'.$stickyName.'"'.(isset($element['#sticky_on']) && $element['#sticky_on']==TRUE?' checked="checked"':'').'/><br/>':'');
}
$element['#tree'] = TRUE; $element['#tree'] = TRUE;
if (isset($element['#value']) && !is_array($element['#value'])) { if (isset($element['#value']) && !is_array($element['#value'])) {
@ -500,7 +590,7 @@ function ife_copyright_process($element,$edit,&$form_state) {
$element['#value'] = array('cc_commercial' => '', 'cc_modifications' => '', 'cc_jurisdiction' => ''); $element['#value'] = array('cc_commercial' => '', 'cc_modifications' => '', 'cc_jurisdiction' => '');
} }
$element['cc'] = array('#type' => 'fieldset', '#title'=>$element['#title'], '#description' => '<div class="cc_preview">preview</div>' , '#collapsible' => TRUE); $element['cc'] = array('#type' => 'fieldset', '#title'=>$element['#title'], '#description' => $sticky.'<div class="cc_preview">preview</div>' , '#collapsible' => TRUE);
$element['cc']['cc_enable'] = array( $element['cc']['cc_enable'] = array(
'#type' => 'checkbox', '#type' => 'checkbox',
@ -579,9 +669,15 @@ function islandora_form_elements_theme() {
'sticky_textfield' => array( 'sticky_textfield' => array(
'arguments' => array('element'), 'arguments' => array('element'),
), ),
'sticky_textarea' => array( 'sticky_textarea' => array(
'arguments' => array('element'), 'arguments' => array('element'),
), ),
'sticky_select' => array(
'arguments' => array('element'),
),
'filechooser' => array( 'filechooser' => array(
'arguments' => array('element'), 'arguments' => array('element'),
'file' => 'includes/filechooser.inc' 'file' => 'includes/filechooser.inc'
@ -672,11 +768,13 @@ function theme_list($element)
$output .= ' <span class="field-suffix">'. $element['#field_suffix'] .'</span>'; $output .= ' <span class="field-suffix">'. $element['#field_suffix'] .'</span>';
} }
$path=drupal_get_path('module','islandora_form_elements');
drupal_add_css($path.'/css/sticky.css');
$stickyName = preg_replace('/\]/','',array_pop(preg_split('/\[/',$element['#name']))).'-sticky'; $stickyName = preg_replace('/\]/','',array_pop(preg_split('/\[/',$element['#name']))).'-sticky';
$output .= (isset($element['#sticky']) && $element['#sticky'] == TRUE?'<input type="checkbox" name="'.$stickyName.'"'.(isset($element['#sticky_on']) && $element['#sticky_on']==TRUE?' checked="checked"':'').'/> Sticky?':'') . '</div>'; $sticky = (isset($element['#sticky']) && $element['#sticky'] == TRUE?'<input class="sticky" type="checkbox" name="'.$stickyName.'"'.(isset($element['#sticky_on']) && $element['#sticky_on']==TRUE?' checked="checked"':'').'/><br/>':'');
return theme('form_element', $element, $output ) . $extra; return theme('form_element', $element, $output . $sticky ) . $extra;
} }
@ -696,6 +794,7 @@ function theme_list($element)
function theme_sticky_textarea($element) { function theme_sticky_textarea($element) {
$class = array('form-textarea'); $class = array('form-textarea');
// Add teaser behavior (must come before resizable) // Add teaser behavior (must come before resizable)
if (!empty($element['#teaser'])) { if (!empty($element['#teaser'])) {
drupal_add_js('misc/teaser.js'); drupal_add_js('misc/teaser.js');
@ -711,8 +810,10 @@ function theme_sticky_textarea($element) {
$class[] = 'resizable'; $class[] = 'resizable';
} }
$path=drupal_get_path('module','islandora_form_elements');
drupal_add_css($path.'/css/sticky.css');
$stickyName = preg_replace('/\]/','',array_pop(preg_split('/\[/',$element['#name']))).'-sticky'; $stickyName = preg_replace('/\]/','',array_pop(preg_split('/\[/',$element['#name']))).'-sticky';
$sticky = (isset($element['#sticky']) && $element['#sticky'] == TRUE?'<input type="checkbox" name="'.$stickyName.'"'.(isset($element['#sticky_on']) && $element['#sticky_on']==TRUE?' checked="checked"':'').'/> Sticky?':''); $sticky = (isset($element['#sticky']) && $element['#sticky'] == TRUE?'<input class="sticky" type="checkbox" name="'.$stickyName.'"'.(isset($element['#sticky_on']) && $element['#sticky_on']==TRUE?' checked="checked"':'').'/><br/>':'');
_form_set_class($element, $class); _form_set_class($element, $class);
@ -720,6 +821,33 @@ function theme_sticky_textarea($element) {
} }
/**
* Format a sticky select.
*
* @param $element
* An associative array containing the properties of the element.
* Properties used: title, value, description, rows, cols, required, attributes
* @return
* A themed HTML string representing the textarea.
*
* @ingroup themeable
*/
function theme_sticky_select($element) {
$path=drupal_get_path('module','islandora_form_elements');
drupal_add_css($path.'/css/sticky.css');
$stickyName = preg_replace('/\]/','',array_pop(preg_split('/\[/',$element['#name']))).'-sticky';
$sticky = (isset($element['#sticky']) && $element['#sticky'] == TRUE?'<input class="sticky" type="checkbox" name="'.$stickyName.'"'.(isset($element['#sticky_on']) && $element['#sticky_on']==TRUE?' checked="checked"':'').'/><br/>':'');
$select = '';
$size = $element['#size'] ? ' size="'. $element['#size'] .'"' : '';
_form_set_class($element, array('form-select'));
$multiple = $element['#multiple'];
return theme('form_element', $element, '<select name="'. $element['#name'] .''. ($multiple ? '[]' : '') .'"'. ($multiple ? ' multiple="multiple" ' : '') . drupal_attributes($element['#attributes']) .' id="'. $element['#id'] .'" '. $size .'>'. form_select_options($element) .'</select>'.$sticky);
}
/** /**
* Theme function to format the output. * Theme function to format the output.
* *
@ -759,11 +887,14 @@ function theme_datepicker($element) {
$output .= ' <span class="field-suffix">'. $element['#field_suffix'] .'</span>'; $output .= ' <span class="field-suffix">'. $element['#field_suffix'] .'</span>';
} }
$path=drupal_get_path('module','islandora_form_elements');
drupal_add_css($path.'/css/sticky.css');
$stickyName = preg_replace('/\]/','',array_pop(preg_split('/\[/',$element['#name']))).'-sticky'; $stickyName = preg_replace('/\]/','',array_pop(preg_split('/\[/',$element['#name']))).'-sticky';
$output .= (isset($element['#sticky']) && $element['#sticky'] == TRUE?'<input type="checkbox" name="'.$stickyName.'"'.(isset($element['#sticky_on']) && $element['#sticky_on']==TRUE?' checked="checked"':'').'/> Sticky?':'') . '</div>'; $sticky = (isset($element['#sticky']) && $element['#sticky'] == TRUE?'<input class="sticky" type="checkbox" name="'.$stickyName.'"'.(isset($element['#sticky_on']) && $element['#sticky_on']==TRUE?' checked="checked"':'').'/><br/>':'');
return theme('form_element', $element, $output ) . $extra;
return theme('form_element', $element, $output.$sticky ) . $extra;
} }
@ -803,11 +934,14 @@ function theme_sticky_textfield($element) {
$output .= ' <span class="field-suffix">'. $element['#field_suffix'] .'</span>'; $output .= ' <span class="field-suffix">'. $element['#field_suffix'] .'</span>';
} }
$path=drupal_get_path('module','islandora_form_elements');
drupal_add_css($path.'/css/sticky.css');
$stickyName = preg_replace('/\]/','',array_pop(preg_split('/\[/',$element['#name']))).'-sticky'; $stickyName = preg_replace('/\]/','',array_pop(preg_split('/\[/',$element['#name']))).'-sticky';
$output .= (isset($element['#sticky']) && $element['#sticky'] == TRUE?'<input type="checkbox" name="'.$stickyName.'"'.(isset($element['#sticky_on']) && $element['#sticky_on']==TRUE?' checked="checked"':'').'/> Sticky?':'') . '</div>'; $sticky = (isset($element['#sticky']) && $element['#sticky'] == TRUE?'<input class="sticky" type="checkbox" name="'.$stickyName.'"'.(isset($element['#sticky_on']) && $element['#sticky_on']==TRUE?' checked="checked"':'').'/><br/>':'');
return theme('form_element', $element, $output ) . $extra; return theme('form_element', $element, $output . $sticky) . $extra;
} }

10
plugins/ImageManipulation.inc

@ -17,8 +17,14 @@ class ImageManipulation {
function createPreview($parameterArray, $dsid, $file, $file_ext) { function createPreview($parameterArray, $dsid, $file, $file_ext) {
$system = getenv('System'); $system = getenv('System');
$file_suffix = '_' . $dsid . '.' . $file_ext; $file_suffix = '_' . $dsid . '.' . $file_ext;
$height = $parameterArray['height'];
$width = $parameterArray['width']; $width = $parameterArray['width'];
if (!isset($parameterArray['height'])) {
$height = $width;
} else {
$height = $parameterArray['height'];
}
$returnValue = TRUE; $returnValue = TRUE;
$output = array(); $output = array();
@ -29,7 +35,7 @@ class ImageManipulation {
} }
if (!file_exists($destFile)) { if (!file_exists($destFile)) {
exec('convert -resize ' . $width . ' -quality 85 "' . $file . '"[0] -strip "' .$destFile . '" 2>&1 &', $output, $returnValue); exec('convert -resize ' . $width . 'x'.$height.' -quality 85 "' . $file . '"[0] -strip "' .$destFile . '" 2>&1 &', $output, $returnValue);
} }
else else
$returnValue = '0'; $returnValue = '0';

2
workflow_client/plugins/image_resize.inc

@ -39,7 +39,7 @@ class image_resize extends Process {
$returnValue = TRUE; $returnValue = TRUE;
$output = array(); $output = array();
$command = 'convert -resize '. $parameters['width'] .' -quality 85 '. $file . '[0] -strip '. $file . $file_suffix .' 2>&1 &'; $command = 'convert -resize '. $parameters['width'].(isset($parameters['height'])?'x'.$parameters['height']:'') .' -quality 85 '. $file . '[0] -strip '. $file . $file_suffix .' 2>&1 &';
exec($command, $output, $returnValue); exec($command, $output, $returnValue);
if (!file_exists($file . $file_suffix)) { if (!file_exists($file . $file_suffix)) {

Loading…
Cancel
Save