diff --git a/css/islandora.base.css b/css/islandora.base.css
index 13dd8637..0a8b3662 100644
--- a/css/islandora.base.css
+++ b/css/islandora.base.css
@@ -5,4 +5,56 @@
Purpose of the stylesheet follows.
*/
+.islandora img {
+ max-width: 100%;
+ *width: 100%;
+}
+.islandora * {
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+/*
+ * These rules will display DTs/DDs as columns.
+ * Constructs must follow a key/value pair pattern.
+ * The three last declarations are meant to kill white space between DTs/DDs
+ * (result of inline-block styling)
+ */
+
+dl.islandora-inline-metadata {
+ margin: 0 auto;
+ letter-spacing: -0.31em;
+ *letter-spacing:normal;
+ word-spacing: -0.43em;
+}
+
+.islandora-inline-metadata dt {
+ margin-right: -1px;
+ width: 15.625%;
+ font-weight: normal;
+ font-weight: bold;
+ padding-right: 0;
+}
+
+.islandora-inline-metadata dd {
+ width: 84.375%;
+ padding-left: 40px;
+}
+
+/*
+ * In this rule, we reset the white-space (see hack above)
+ */
+.islandora-inline-metadata dt,
+.islandora-inline-metadata dd {
+ display: inline-block;
+ *display: inline;
+ zoom: 1;
+ letter-spacing: normal;
+ word-spacing: normal;
+ vertical-align: top;
+ padding-top: 6px;
+ padding-bottom: 4px;
+ margin: 0;
+}
diff --git a/css/islandora.theme.css b/css/islandora.theme.css
index ad0ae79d..e299b9db 100644
--- a/css/islandora.theme.css
+++ b/css/islandora.theme.css
@@ -9,71 +9,27 @@
* Thumbnails float optionally to the left or right of descriptive lists.
*/
-.islandora-object-thumb img {
- max-width: 100%;
- *width: 100%;
-}
-
-dl.islandora-object-thumb {
+dl.islandora-object-tn {
float: left;
- width: 15%;
- margin: 0.75em auto;
-}
-
-.islandora-object-thumb dt,
-.islandora-object-thumb dd {
+ width: 20.8333%;
+ padding: 0 10px 0 0;
margin: 0;
}
-/*
- * These rules will display DTs/DDs as columns.
- * Constructs must follow a key/value pair pattern.
- * The three last declarations are meant to kill white space between DTs/DDs
- * (result of inline-block styling)
- */
dl.islandora-object-fields {
float: right;
- width:83%;
- margin: 0.75em auto;
- letter-spacing:-0.34em;
- *letter-spacing:normal;
- word-spacing:-0.44em;
+ width:79.1666%;
border-top:3px solid #ddd;
-}
+}
-/*
- * The width + left/right padding of DTs/DDs equals 88% when compensating for an image
- */
.islandora-object-fields dt {
- margin-right:-1px;
- width:22.5%;
font-weight: bold;
}
-.islandora-object-fields dd {
- width:67%;
-}
-
-/*
- * In this rule, we reset the white-space (see hack above)
- */
.islandora-object-fields dt,
.islandora-object-fields dd {
- display:inline-block;
- *display:inline;
- zoom:1;
- letter-spacing:normal;
- word-spacing:normal;
- vertical-align:top;
padding:6px 2% 4px;
- margin:0;
border-top:1px solid #ddd;
- -ms-word-break: break-all;
- word-break: break-all;
- word-break: break-word; /* webkit */
--webkit-hyphens: auto;
- -moz-hyphens: auto;
- hyphens: auto;
}
.islandora-object-fields dt.first,
diff --git a/includes/datastream.inc b/includes/datastream.inc
index 980977c4..2c7e58b2 100644
--- a/includes/datastream.inc
+++ b/includes/datastream.inc
@@ -172,3 +172,170 @@ function islandora_get_add_datastream_form($object_id, &$form_state) {
}
return $form;
}
+
+/**
+ * Default implmentation currently only does M (managed datastreams)
+ * other modules can hook form alter to add other functionality
+ * @global string $base_url
+ * @global object $user
+ * Drupal user
+ * @param array $form
+ * @param array $form_state
+ * @return type
+ */
+function islandora_add_datastream_form_submit($form, &$form_state) {
+ global $base_url;
+ if (!empty($form_state['submit']) && $form_state['submit'] == 'OK') {
+ $form_state['rebuild'] = TRUE;
+ return;
+ }
+
+ $file = $form_state['values']['add-stream-file-location'];
+ $file = drupal_realpath($file);
+ $object_id = $form_state['values']['pid'];
+ $dsid = $form_state['values']['stream_id'];
+ $ds_label = $form_state['values']['stream_label']; // Add the file extention to the end of the label.;
+ //$dformat = $mimetype->getType($file);
+ $controlGroup = "M";
+ //if ($dformat == 'text/xml') {
+ // $controlGroup = 'X';
+ //}
+ global $user;
+ try {
+ $restConnection = new RestConnection($user);
+ $fedora_object = new FedoraObject($object_id, $restConnection->repository);
+ $ds = $fedora_object->constructDatastream($dsid, $controlGroup);
+ $ds->label = $ds_label;
+ $ds->setContentFromFile($file);
+ $fedora_object->ingestDatastream($ds);
+ $d_file = file_load($form_state['values']['fid']);
+ file_delete($d_file);
+ } catch (exception $e) {
+ drupal_set_message(t('@message', array('@message' => check_plain($e->getMessage()))), 'error');
+ return;
+ }
+ $form_state['rebuild'] = TRUE;
+}
+
+/**
+ * validates this datastream id against its allowed mimetypes in the dscomposite
+ * of its content models.
+ * @param array $form
+ * @param array $form_state
+ * @return boolean
+ */
+function islandora_add_datastream_form_validate($form, &$form_state) {
+ module_load_include('inc', 'islandora', 'includes/MimeClass');
+ $mimetype = new MimeClass();
+ if ($form_state['clicked_button']['#value'] == 'OK') {
+ $form_state['rebuild'] = TRUE;
+ return;
+ }
+ $dsid = $form_state['values']['stream_id'];
+ $dsLabel = $form_state['values']['stream_label'];
+ if (strlen($dsid) > 64) {
+ form_set_error('', t('Data stream ID cannot be more than 64 characters.'));
+ return FALSE;
+ }
+ if (!(preg_match("/^[a-zA-Z]/", $dsid))) {
+ form_set_error('', t("Data stream ID (@dsid) has to start with a letter.", array('@dsid' => check_plain($dsid))));
+ return FALSE;
+ }
+ if (strlen($dsLabel) > 64) {
+ form_set_error('', t('Data stream Label cannot be more than 64 characters.'));
+ return FALSE;
+ }
+ if (strpos($dsLabel, '/')) {
+ form_set_error('', t('Data stream Label cannot contain a "/".'));
+ return FALSE;
+ }
+ $mimetype = new MimeClass();
+ $unused_dsids = islandora_get_unused_dsids($form_state['values']['pid']);
+ $types_allowed = $unused_dsids[$dsid];
+ $arr = array();
+ foreach ($types_allowed as $type) {
+ $arr[] = $mimetype->getExtension($type);
+ }
+ $file = file_save_upload('add-stream-file-location', array('file_validate_extensions' => $arr));
+ if ($file) {
+ $form_state['values']['add-stream-file-location'] = $file->uri;
+ $form_state['values']['fid'] = $file->fid; //so we can load it to delete later
+ }
+ else {
+ form_set_error('add-stream-file-location', t('There was no file uploaded'));
+ }
+}
+
+
+/**
+ * buids the default add datastream form
+ * @param string $object_id
+ * @param array $form_state
+ * @return array
+ * a form ready to be rendered with a call to Drupal render
+ */
+function islandora_add_datastream_form($form, &$form_state, $object_id) {
+ $unused_dsids = islandora_get_unused_dsids($object_id); //$defined_dsids;
+ $form = array();
+ $form['add_fieldset'] = array(
+ '#type' => 'fieldset',
+ '#title' => 'Add a datastream',
+ '#collapsible' => TRUE,
+ '#collapsed' => TRUE,
+ );
+ $form['add_fieldset']['add_datastream_label'] = array(
+ '#value' => t('
+
Details
-
+
-
'); ?>
-
-
- $value): ?>
- -
-
-
- -
-
-
-
-
-
+
+
+ $value): ?>
+ -
+
+
+ -
+
+
+
+
+
diff --git a/islandora.module b/islandora.module
index 7a0e89ef..521101bc 100644
--- a/islandora.module
+++ b/islandora.module
@@ -108,16 +108,16 @@ function islandora_menu() {
'access arguments' => array(FEDORA_VIEW),
);
- /*
+
$items['islandora/object/%/add'] = array(
'title' => 'Add to an object',
- //'file' => 'includes/add-menu.inc',
- 'page callback' => 'islandora_add_datastream',
- 'page arguments' => array(2),
+ 'file' => 'includes/datastream.inc',
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('islandora_add_datastream_form',2),
'type' => MENU_NORMAL_ITEM,
'access arguments' => array(FEDORA_ADD_DS)
);
- */
+
$items['islandora/object/%/view'] = array(
'title' => 'View',
@@ -155,8 +155,9 @@ function islandora_menu() {
$items['islandora/object/%/manage/properties'] = array(
'title' => 'Properties',
- 'page callback' => 'islandora_edit_properties',
- 'page arguments' => array(2),
+ 'page callback' => 'drupal_get_form',
+ 'file' => 'includes/object_properties.inc',
+ 'page arguments' => array('islandora_edit_properties_form',2),
'type' => MENU_LOCAL_TASK,
'access arguments' => array(FEDORA_MODIFY_STATE),
'weight' => -5,
@@ -344,12 +345,25 @@ function islandora_edit_object($object_id) {
return $output;
}
+/**
+ * edit properties form
+ * @param type $object_id
+ * @return string
+ */
function islandora_edit_properties($object_id) {
- return 'edit properties ' . $object_id;
+ $object = islandora_get_object($object_id);
+ if (isset($object)) {
+ module_load_include('inc','islandora','includes/object_properties');
+ $form = drupal_get_form('islandora_edit_properties_form', $object);
+ drupal_set_title($object->label);
+ return drupal_render($form);
+ }
+ return "";
}
/**
* builds a default page for the edit tab
+ *
* @param object $fedora_object
* A tuque Fedora Object
*/
@@ -548,25 +562,10 @@ function islandora_permission() {
}
/**
- * renders the add datastream from.
- * @param string $object_id
- * @return type
+ * preprocess for the default view template
+ * @global string $base_url
+ * @param array $variables
*/
-function islandora_add_datastream($object_id) {
- if (!isset($object_id)) {
- drupal_set_message(t('Cannot add datastream to object, object id not set'));
- return;
- }
- $object = islandora_get_object($object_id);
- if (isset($object)) {
- $form = drupal_get_form('islandora_add_datastream_form', $object);
- drupal_set_title($object->label);
- return drupal_render($form);
- }
- return "";
- // hook form alter might be enough here may not need a module invoke all
-}
-
function islandora_preprocess_islandora_default(&$variables) {
$islandora_object = $variables['islandora_object'];
module_load_include('inc', 'islandora', 'includes/islandora_dublin_core');
@@ -586,6 +585,12 @@ function islandora_preprocess_islandora_default(&$variables) {
}
}
+/**
+ * a helper function to get a connection and return an object
+ * @global object $user
+ * @param string $object_id
+ * @return FedoraObject
+ */
function islandora_get_object($object_id) {
module_load_include('inc', 'islandora', 'RestConnection');
global $user;
@@ -600,117 +605,18 @@ function islandora_get_object($object_id) {
}
/**
- * Builds the default add a datastream form.
- * @param array $form
- * @param array $form_state
- * @param Object $islandora_object
- * @return type
- */
-function islandora_add_datastream_form($form, &$form_state, $islandora_object) {
- module_load_include('inc', 'islandora', 'includes/datastream');
- $form = islandora_get_add_datastream_form($islandora_object->id, $form_state);
- return $form;
-}
-
-/**
- * Default implmentation currently only does M (managed datastreams)
- * other modules can hook form alter to add other functionality
+ * preprocess the edit template
* @global string $base_url
- * @global object $user
- * Drupal user
- * @param array $form
- * @param array $form_state
- * @return type
+ * @param array $variables
+ * theme variables for the edit template
*/
-function islandora_add_datastream_form_submit($form, &$form_state) {
- global $base_url;
- if (!empty($form_state['submit']) && $form_state['submit'] == 'OK') {
- $form_state['rebuild'] = TRUE;
- return;
- }
-
- $file = $form_state['values']['add-stream-file-location'];
- $file = drupal_realpath($file);
- $object_id = $form_state['values']['pid'];
- $dsid = $form_state['values']['stream_id'];
- $ds_label = $form_state['values']['stream_label']; // Add the file extention to the end of the label.;
- //$dformat = $mimetype->getType($file);
- $controlGroup = "M";
- //if ($dformat == 'text/xml') {
- // $controlGroup = 'X';
- //}
- global $user;
- try {
- $restConnection = new RestConnection($user);
- $fedora_object = new FedoraObject($object_id, $restConnection->repository);
- $ds = $fedora_object->constructDatastream($dsid, $controlGroup);
- $ds->label = $ds_label;
- $ds->setContentFromFile($file);
- $fedora_object->ingestDatastream($ds);
- $d_file = file_load($form_state['values']['fid']);
- file_delete($d_file);
- } catch (exception $e) {
- drupal_set_message(t('@message', array('@message' => check_plain($e->getMessage()))), 'error');
- return;
- }
- $form_state['rebuild'] = TRUE;
-}
-
-/**
- * validates this datastream id against its allowed mimetypes in the dscomposite
- * of its content models.
- * @param array $form
- * @param array $form_state
- * @return boolean
- */
-function islandora_add_datastream_form_validate($form, &$form_state) {
- module_load_include('inc', 'islandora', 'includes/MimeClass');
- $mimetype = new MimeClass();
- if ($form_state['clicked_button']['#value'] == 'OK') {
- $form_state['rebuild'] = TRUE;
- return;
- }
- $dsid = $form_state['values']['stream_id'];
- $dsLabel = $form_state['values']['stream_label'];
- if (strlen($dsid) > 64) {
- form_set_error('', t('Data stream ID cannot be more than 64 characters.'));
- return FALSE;
- }
- if (!(preg_match("/^[a-zA-Z]/", $dsid))) {
- form_set_error('', t("Data stream ID (@dsid) has to start with a letter.", array('@dsid' => check_plain($dsid))));
- return FALSE;
- }
- if (strlen($dsLabel) > 64) {
- form_set_error('', t('Data stream Label cannot be more than 64 characters.'));
- return FALSE;
- }
- if (strpos($dsLabel, '/')) {
- form_set_error('', t('Data stream Label cannot contain a "/".'));
- return FALSE;
- }
- $mimetype = new MimeClass();
- $unused_dsids = islandora_get_unused_dsids($form_state['values']['pid']);
- $types_allowed = $unused_dsids[$dsid];
- $arr = array();
- foreach ($types_allowed as $type) {
- $arr[] = $mimetype->getExtension($type);
- }
- $file = file_save_upload('add-stream-file-location', array('file_validate_extensions' => $arr));
- if ($file) {
- $form_state['values']['add-stream-file-location'] = $file->uri;
- $form_state['values']['fid'] = $file->fid; //so we can load it to delete later
- }
- else {
- form_set_error('add-stream-file-location', t('There was no file uploaded'));
- }
-}
-
function islandora_preprocess_islandora_default_edit(&$variables) {
$islandora_object = $variables['islandora_object'];
global $base_url;
$datastreams = array();
$variables['islandora_editmetadata_url'] = $base_url . '/islandora/edit_form/' . $islandora_object->id;
- $variables['add_datastream_form'] = drupal_get_form('islandora_add_datastream_form', $islandora_object);
+ module_load_include('inc','islandora','includes/datastream');
+ $variables['add_datastream_form'] = drupal_get_form('islandora_add_datastream_form', $islandora_object->id);
foreach ($islandora_object as $ds) {
$datastreams['download_url'] = $base_url . '/islandora/object/' . $islandora_object->id . '/datastream/' . $ds->id . '/download';
$datastreams['view_url'] = $base_url . '/islandora/object/' . $islandora_object->id . '/datastream/' . $ds->id . '/view';
diff --git a/islandora_basic_image/css/islandora_basic_image.theme.css b/islandora_basic_image/css/islandora_basic_image.theme.css
index 1c74b737..e7b31c4d 100644
--- a/islandora_basic_image/css/islandora_basic_image.theme.css
+++ b/islandora_basic_image/css/islandora_basic_image.theme.css
@@ -5,12 +5,6 @@
Purpose of the stylesheet follows.
*/
-.islandora-basic-image-object img {
- height: auto;
- max-width: 100%;
- *width: 100%;
-}
-
.islandora-basic-image-content,
.islandora-basic-image-sidebar {
display: inline;
@@ -19,30 +13,14 @@
.islandora-basic-image-metadata {
display: block;
- clear: both
+ clear: both;
}
dl.islandora-basic-image-fields {
width:100%;
- margin: 0 auto;
- letter-spacing:-0.31em;
- *letter-spacing:normal;
- word-spacing:-0.43em;
-}
-
-/*
- * The width + left/right padding of DTs/DDs equals 88% when compensating for an image
- */
-
-.islandora-basic-image-metadata * {
- -moz-box-sizing: border-box;
- -webkit-box-sizing: border-box;
- box-sizing: border-box;
}
.islandora-basic-image-metadata dt {
- margin-right:-1px;
- width:15.625%;
font-weight: normal;
text-align: right;
font-weight: bold;
@@ -50,24 +28,12 @@ dl.islandora-basic-image-fields {
}
.islandora-basic-image-metadata dd {
- width:84.375%;
padding-left: 40px;
}
-/*
- * In this rule, we reset the white-space (see hack above)
- */
+
.islandora-basic-image-metadata dt,
.islandora-basic-image-metadata dd {
- display:inline-block;
- *display:inline;
- zoom:1;
- letter-spacing:normal;
- word-spacing:normal;
- vertical-align:top;
- padding-top: 6px;
- padding-bottom: 4px;
- margin:0;
border-top:1px solid #e5e5e5;
}
@@ -84,22 +50,8 @@ body.two-sidebars .islandora-basic-image-sidebar {
width: 100%;
}
-.islandora-basic-image-sidebar,
-.islandora-basic-image-sidebar,
-body.one-sidebar .islandora-basic-image-sidebar,
-body.two-sidebars .islandora-basic-image-sidebar {
- width: 100%;
-}
-
@media all and (min-width: 768px) {
- body.no-sidebars .islandora-basic-image-content,
- body.no-sidebars .islandora-basic-image-sidebar {
- -moz-box-sizing: border-box;
- -webkit-box-sizing: border-box;
- box-sizing: border-box;
- }
-
body.no-sidebars .islandora-basic-image-content {
width: 60%;
padding: 0 20px 0 0;
diff --git a/islandora_basic_image/islandora-basic-image.tpl.php b/islandora_basic_image/islandora-basic-image.tpl.php
index 596a5233..a1a61da5 100644
--- a/islandora_basic_image/islandora-basic-image.tpl.php
+++ b/islandora_basic_image/islandora-basic-image.tpl.php
@@ -23,7 +23,7 @@
?>
-
+
@@ -36,7 +36,7 @@