MENU_NORMAL_ITEM, 'title' => t('CMIS Repository'), 'page callback' => 'cmis_browser_content_get', 'access callback' => 'user_access', 'access arguments' => array('access cmis'), 'file' => 'cmis_browser.content_get.inc' ); $items['cmis/delete'] = array( 'type' => MENU_CALLBACK, 'page callback' => 'drupal_get_form', 'page arguments' => array('cmis_browser_content_delete_confirm'), 'access callback' => 'user_access', 'access arguments' => array('delete cmis'), 'file' => 'cmis_browser.content_delete.inc' ); $items['cmis/properties'] = array( 'type' => MENU_CALLBACK, 'page callback' => 'cmis_browser_content_properties', 'access callback' => 'user_access', 'access arguments' => array('access cmis'), 'file' => 'cmis_browser.content_properties.inc' ); $items['cmis/autocomplete'] = array( 'title' => t('cmis path autocomplete'), 'page callback' => 'cmis_browser_autocomplete', 'access callback' => 'user_access', 'access arguments' => array('access cmis'), 'type' => MENU_CALLBACK, 'file' => 'cmis_browser.content_autocomplete.inc' ); $items['cmis/tree'] = array( 'title' => t('cmis tree nav'), 'page callback' => 'cmis_browser_tree', 'access callback' => 'user_access', 'access arguments' => array('access cmis'), 'type' => MENU_CALLBACK, 'file' => 'cmis_browser.content_autocomplete.inc' ); return $items; } /** * Register custom themes for cmis_browser module. * */ function cmis_browser_theme() { return array( 'cmis_browser' => array( 'arguments' => array('context' => NULL), 'file' => 'cmis_browser.theme.inc' ), 'cmis_browser_browse_form' => array( 'arguments' => array('form' => NULL), 'file' => 'cmis_browser.theme.inc', 'render element' => 'form', ), 'cmis_browser_browse_children' => array( 'arguments' => array('context' => NULL), 'file' => 'cmis_browser.theme.inc' ), 'cmis_browser_browse_breadcrumb' => array( 'arguments' => array('bcarray' => NULL), 'file' => 'cmis_browser.theme.inc' ), 'cmis_browser_content_properties' => array( 'arguments' => array('cmis_object' => NULL), 'file' => 'cmis_browser.theme.inc' ), 'cmis_browser_folder_picker' => array( 'arguments' => array('text_element' => NULL), 'file' => 'cmis_browser.theme.inc' ) ); } /** * Implementation of hook_form(). * */ function cmis_browser_browse_form($form, &$form_state) { $parts = explode('/', $_GET['q']); $path = implode('/', array_slice($parts, 2)); $form['path'] = array( '#type' => 'textfield', '#title' => t('Path'), '#default_value' => '/'. $path, '#autocomplete_path' => 'cmis/autocomplete', '#size' => 50, //'#theme' => 'cmis_browser_folder_picker', ); $form['submit'] = array( '#type' => 'submit', '#name' => 'browse', '#default_value' => 'Browse', ); return $form; } /** * Implementation of hook_form_submit * */ function cmis_browser_browse_form_submit($form, &$form_state) { unset($form_state['storage']); $form_state['redirect'] = 'cmis/browser'. $form_state['values']['path'];; } /** * Implementation of hook_form() * */ function cmis_browser_actions_form($form_state) { $form['#attributes']['enctype'] = 'multipart/form-data'; $form['actions'] = array( '#type' => 'fieldset', '#title' => t('Actions'), '#collapsible' => TRUE, '#collapsed' => TRUE ); $form['actions']['folder_create'] = array( '#type' => 'fieldset', '#title' => t('Create folder'), '#collapsible' => TRUE, '#collapsed' => TRUE ); $form['actions']['folder_create']['folder_name'] = array( '#type' => 'textfield', '#title' => t('Folder name') ); $form['actions']['folder_create']['folder_create_button'] = array( '#type' => 'submit', '#name' => 'folder_create_action', '#value' => t('Create new folder') ); $form['actions']['content_create'] = array( '#type' => 'fieldset', '#title' => t('Create content'), '#collapsible' => TRUE, '#collapsed' => TRUE ); $form['actions']['content_create']['content_name'] = array( '#type' => 'textfield', '#title' => t('Name'), '#size' => 70 ); $form['actions']['content_create']['content_body'] = array( '#type' => 'textarea', '#title' => t('Content') ); $form['actions']['content_create']['content_create_button'] = array( '#type' => 'submit', '#name' => 'content_create_action', '#default_value' => 'Create' ); $form['actions']['content_upload'] = array( '#type' => 'fieldset', '#title' => t('Upload content'), '#collapsible' => TRUE, '#collapsed' => TRUE ); $form['actions']['content_upload']['file'] = array( '#type' => 'file', '#title' => t('Local file') ); $form['actions']['content_upload']['content_upload_button'] = array( '#type' => 'submit', '#name' => 'content_upload_action', '#value' => t('Upload') ); return $form; } /** * Implementation of hook_form_submit(). * */ function cmis_browser_actions_form_submit($form, & $form_state) { module_load_include('content_create.inc', 'cmis_browser'); $path = rawurlencode('/' . implode('/', array_slice(explode('/', $_GET['q']), 2))); switch($form_state['clicked_button']['#name']) { case 'folder_create_action': _cmis_browser_actions_folder_create($path, $form_state['values']['folder_name']); break; case 'content_create_action': _cmis_browser_actions_content_create($path, $form_state['values']['content_name'], $form_state['values']['content_body'], 'text/html'); break; case 'content_upload_action': // @todo cleanup uploaded file $file = file_save_upload('file'); if ($file) { _cmis_browser_actions_content_create($path, $file->filename, file_get_contents(drupal_realpath($file->uri)), $file->filemime); } else { form_set_error('content_upload', t('Unable to handle uploaded file.')); } break; } }