### Eclipse Workspace Patch 1.0 #P drupal-contrib-5 Index: modules/panels/content_types/custom.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/panels/content_types/custom.inc,v retrieving revision 1.2.4.2 diff -u -r1.2.4.2 custom.inc --- modules/panels/content_types/custom.inc 15 Mar 2007 23:13:41 -0000 1.2.4.2 +++ modules/panels/content_types/custom.inc 8 Jan 2008 23:20:01 -0000 @@ -1,113 +1,119 @@ - 'panels_content_custom', - 'admin' => 'panels_admin_custom', - ); - return $items; -} - -/** - * Output function for the 'custom' content type. Outputs a custom - * based on the module and delta supplied in the configuration. - */ -function panels_content_custom($conf) { - $title = filter_xss_admin($conf['title']); - $css_id = filter_xss_admin($conf['css_id']); - $css_class = filter_xss_admin($conf['css_class']); - $body = check_markup($conf['body'], $conf['format'], FALSE); - return theme('panels_content_custom', $title, $body, $css_id, $css_class); -} - -function theme_panels_content_custom($title, $body, $css_id = NULL, $css_class = NULL) { - if ($css_id) { - $css_id = ' id="'. $css_id .'"'; - } - if ($css_class) { - $css_class = ' '. $css_class; - } - $output = '
'; - if ($title) { - $output .= '

' . $title . '

'; - } - $output .= $body; - $output .= '
'; - return $output; -} -/** - * Callback to perform administrative functions on the content block - */ -function panels_admin_custom($op, &$arg, $arg2 = NULL) { - switch ($op) { - case 'list': - $conf = $arg; - return 'Custom: ' . filter_xss_admin($conf['title']); - case 'add button': - $form['title'] = array( - '#title' => t('Enter an optional title for custom content you define'), - '#type' => 'textfield', - '#maxlength' => 512, - '#weight' => -10, - ); - $form['submit'] = array( - '#type' => 'button', - '#value' => t('Add custom'), - ); - - $form['#prefix'] = '
'; - $form['#suffix'] = '
'; - return $form; - case 'add': - if ($_POST['op'] != t('Add custom')) { - return; - } - return $arg; - case 'edit': - $conf = &$arg; - $form['title'] = array( - '#type' => 'textfield', - '#default_value' => $conf['title'], - '#title' => t('Title'), - '#description' => t('Title'), - '#size' => 15, - ); - $form['body'] = array( - '#title' => t('Body'), - '#type' => 'textarea', - '#default_value' => $conf['body'], - '#rows' => 10, - '#cols' => 20, - ); - $arg2[] = 'format'; - $form['format'] = filter_form($conf['format'], 1, $arg2); - - $form['css_id'] = array( - '#type' => 'textfield', - '#default_value' => $conf['css_id'], - '#title' => t('CSS ID'), - '#description' => t('CSS ID of this custom content.'), - '#weight' => 2, - '#size' => 15, - ); - $form['css_class'] = array( - '#type' => 'textfield', - '#default_value' => $conf['css_class'], - '#title' => t('CSS class'), - '#description' => t('CSS class of this custom content.'), - '#weight' => 2, - '#size' => 15, - ); - return $form; - case 'validate': - // This one has nothing to validate. - $form = &$arg; - return; - case 'save': - // For this one, the form values go directly into the config. - $form = &$arg; - return $form; - } -} + 'panels_content_custom', + 'admin' => 'panels_admin_custom', + ); + return $items; +} + +/** + * Output function for the 'custom' content type. Outputs a custom + * based on the module and delta supplied in the configuration. + */ +function panels_content_custom($conf) { + $title = filter_xss_admin($conf['title']); + $css_id = filter_xss_admin($conf['css_id']); + $css_class = filter_xss_admin($conf['css_class']); + $body = check_markup($conf['body'], $conf['format'], FALSE); + return theme('panels_content_custom', $title, $body, $css_id, $css_class); +} + +function theme_panels_content_custom($title, $body = '', $css_id = NULL, $css_class = NULL) { + if (!empty($css_id)) { + $css_id = ' id="'. $css_id .'"'; + } + if (!empty($css_class)) { + $css_class = ' '. $css_class; + } + $output = '
'; + if (!empty($title)) { + $output .= '

'. $title .'

'; + } + $output .= $body; + $output .= '
'; + return $output; +} +/** + * Callback to perform administrative functions on the content block + */ +function panels_admin_custom($op, &$arg, $arg2 = NULL) { + switch ($op) { + case 'list': + $conf = $arg; + return 'Custom: '. filter_xss_admin($conf['title']); + + case 'add button': + $form['title'] = array( + '#title' => t('Enter an optional title for custom content you define'), + '#type' => 'textfield', + '#maxlength' => 512, + '#weight' => -10, + ); + $form['submit'] = array( + '#type' => 'button', + '#value' => t('Add custom'), + ); + $form['#prefix'] = '
'; + $form['#suffix'] = '
'; + return $form; + + case 'add': + if (isset($_POST['op']) && $_POST['op'] != t('Add custom')) { + return; + } + return $arg; + + case 'edit': + $conf = &$arg; + $form['title'] = array( + '#type' => 'textfield', + '#default_value' => $conf['title'], + '#title' => t('Title'), + '#description' => t('Title'), + '#size' => 15, + ); + $form['body'] = array( + '#title' => t('Body'), + '#type' => 'textarea', + '#default_value' => $conf['body'], + '#rows' => 10, + '#cols' => 20, + ); + $arg2[] = 'format'; + $form['format'] = filter_form($conf['format'], 1, $arg2); + + $form['css_id'] = array( + '#type' => 'textfield', + '#default_value' => $conf['css_id'], + '#title' => t('CSS ID'), + '#description' => t('CSS ID of this custom content.'), + '#weight' => 2, + '#size' => 15, + ); + $form['css_class'] = array( + '#type' => 'textfield', + '#default_value' => $conf['css_class'], + '#title' => t('CSS class'), + '#description' => t('CSS class of this custom content.'), + '#weight' => 2, + '#size' => 15, + ); + return $form; + + case 'validate': + // This one has nothing to validate. + $form = &$arg; + return; + + case 'save': + // For this one, the form values go directly into the config. + $form = &$arg; + return $form; + } +} Index: modules/panels/content_types/node.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/panels/content_types/node.inc,v retrieving revision 1.2.4.2 diff -u -r1.2.4.2 node.inc --- modules/panels/content_types/node.inc 15 Mar 2007 23:21:16 -0000 1.2.4.2 +++ modules/panels/content_types/node.inc 8 Jan 2008 23:20:01 -0000 @@ -1,110 +1,115 @@ - 'panels_content_node', - 'admin' => 'panels_admin_node', - ); - return $items; -} - -/** - * Output function for the 'node' content type. Outputs a node - * based on the module and delta supplied in the configuration. - */ -function panels_content_node($conf) { - $node = node_load($conf['nid']); - if (!node_access('view', $node)) { - return; - } - - if ($conf['suppress_title']) { - $node->title = ''; - } - - $output = node_view($node, $conf['teaser'], FALSE, $conf['links']); - return $output; -} - -/** - * Callback to perform administrative functions on the content block - */ -function panels_admin_node($op, &$arg, $arg2 = NULL) { - switch ($op) { - case 'list': - $conf = $arg; - $node = node_load($conf['nid']); - return 'Node: ' . check_plain($node->title); - case 'add button': - $form['nid'] = array( - '#title' => t('Enter the title or NID of a post'), - '#type' => 'textfield', - '#maxlength' => 512, - '#autocomplete_path' => 'panels/node/autocomplete', - '#weight' => -10, - ); - $form['submit'] = array( - '#type' => 'button', - '#value' => t('Add post'), - ); - - $form['#prefix'] = '
'; - $form['#suffix'] = '
'; - return $form; - case 'add': - if ($_POST['op'] != t('Add post')) { - return; - } - $form = &$arg; - if (is_numeric($form['nid'])) { - $conf = array(); - $conf['nid'] = $form['nid']; - } - else { - $conf = db_fetch_array(db_query(db_rewrite_sql("SELECT n.nid FROM {node} n WHERE LOWER(title) = LOWER('%s')"), $form['nid'])); - if (!$conf['nid']) { - drupal_set_message(t('Unable to find "%s"', array('%s' => check_plain($form['nid'])))); - return; - } - } - // default to just teaser - $conf['teaser'] = TRUE; - return $conf; - case 'edit': - $conf = &$arg; - $form['nid'] = array( - '#type' => 'hidden', - '#default_value' => $conf['nid'], - ); - $form['teaser'] = array( - '#title' => t('Teaser'), - '#type' => 'checkbox', - '#default_value' => $conf['teaser'], - '#description' => t('Check here to show only the node teaser'), - ); - $form['links'] = array( - '#type' => 'checkbox', - '#default_value' => $conf['links'], - '#title' => t('Display links'), - '#description' => t('Check here to display the links with the post.') - ); - $form['suppress_title'] = array( - '#type' => 'checkbox', - '#default_value' => $conf['suppress_title'], - '#title' => t('Suppress node title'), - '#description' => t('Check here to suppress the node title.') - ); - - return $form; - case 'validate': - // This one has nothing to validate. - $form = &$arg; - return; - case 'save': - // For this one, the form values go directly into the config. - $form = &$arg; - return $form; - } -} + 'panels_content_node', + 'admin' => 'panels_admin_node', + ); + return $items; +} + +/** + * Output function for the 'node' content type. Outputs a node + * based on the module and delta supplied in the configuration. + */ +function panels_content_node($conf) { + $node = node_load($conf['nid']); + if (!node_access('view', $node)) { + return; + } + + if (!empty($conf['suppress_title'])) { + $node->title = ''; + } + + $output = node_view($node, $conf['teaser'], FALSE, $conf['links']); + return $output; +} + +/** + * Callback to perform administrative functions on the content block + */ +function panels_admin_node($op, &$arg, $arg2 = NULL) { + switch ($op) { + case 'list': + $conf = $arg; + $node = node_load($conf['nid']); + return 'Node: '. check_plain($node->title); + + case 'add button': + $form['nid'] = array( + '#title' => t('Enter the title or NID of a post'), + '#type' => 'textfield', + '#maxlength' => 512, + '#autocomplete_path' => 'panels/node/autocomplete', + '#weight' => -10, + ); + $form['submit'] = array( + '#type' => 'button', + '#value' => t('Add post'), + ); + $form['#prefix'] = '
'; + $form['#suffix'] = '
'; + return $form; + + case 'add': + if (isset($_POST['op']) && $_POST['op'] != t('Add post')) { + return; + } + $form = &$arg; + if (is_numeric($form['nid'])) { + $conf = array(); + $conf['nid'] = $form['nid']; + } + else { + $conf = db_fetch_array(db_query(db_rewrite_sql("SELECT n.nid FROM {node} n WHERE LOWER(title) = LOWER('%s')"), $form['nid'])); + if (empty($conf['nid'])) { + drupal_set_message(t('Unable to find "%s"', array('%s' => check_plain($form['nid'])))); + return; + } + } + // default to just teaser + $conf['teaser'] = TRUE; + return $conf; + + case 'edit': + $conf = &$arg; + $form['nid'] = array( + '#type' => 'hidden', + '#default_value' => $conf['nid'], + ); + $form['teaser'] = array( + '#title' => t('Teaser'), + '#type' => 'checkbox', + '#default_value' => $conf['teaser'], + '#description' => t('Check here to show only the node teaser'), + ); + $form['links'] = array( + '#type' => 'checkbox', + '#default_value' => $conf['links'], + '#title' => t('Display links'), + '#description' => t('Check here to display the links with the post.') + ); + $form['suppress_title'] = array( + '#type' => 'checkbox', + '#default_value' => $conf['suppress_title'], + '#title' => t('Suppress node title'), + '#description' => t('Check here to suppress the node title.') + ); + return $form; + + case 'validate': + // This one has nothing to validate. + $form = &$arg; + return; + + case 'save': + // For this one, the form values go directly into the config. + $form = &$arg; + return $form; + } +} Index: modules/panels/content_types/block.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/panels/content_types/block.inc,v retrieving revision 1.1.4.2 diff -u -r1.1.4.2 block.inc --- modules/panels/content_types/block.inc 17 Mar 2007 00:56:33 -0000 1.1.4.2 +++ modules/panels/content_types/block.inc 8 Jan 2008 23:20:00 -0000 @@ -1,128 +1,142 @@ - 'panels_content_block', - 'admin' => 'panels_admin_block', - ); - return $items; -} - -/** - * Output function for the 'block' content type. Outputs a block - * based on the module and delta supplied in the configuration. - */ -function panels_content_block($conf) { - $block = (object) module_invoke($conf['module'], 'block', 'view', $conf['delta']); - $block->module = $conf['module']; - $block->delta = $conf['delta']; - if ($conf['override_title']) { - $block->subject = check_plain($conf['override_title_text']); - } - - // Test for block visibility - $result = db_query("SELECT pages, visibility FROM {blocks} WHERE module = '%s' AND delta = %d", $block->module, $block->delta); - $block_visibility = db_fetch_object($result); - - if ($block_visibility && $block_visibility->pages) { - if ($block_visibility->visibility < 2) { - $path = drupal_get_path_alias($_GET['q']); - $regexp = '/^('. preg_replace(array('/(\r\n?|\n)/', '/\\\\\*/', '/(^|\|)\\\\($|\|)/'), array('|', '.*', '\1'. preg_quote(variable_get('site_frontpage', 'node'), '/') .'\2'), preg_quote($block->pages, '/')) .')$/'; - $page_match = !($block->visibility xor preg_match($regexp, $path)); - } else { - $page_match = drupal_eval($block->pages); - } - } else { - $page_match = TRUE; - } - - if ($page_match) { - return theme('block', $block); - } -} - -/** - * Callback to perform administrative functions on the content block - */ -function panels_admin_block($op, &$arg, $arg2 = NULL) { - switch ($op) { - case 'list': - $conf = $arg; - $block = module_invoke($conf['module'], 'block', 'list'); - $title = $block[$conf['delta']]['info']; - if ($conf['override_title']) { - $title .= ' [' . check_plain($conf['override_title_text']) . ']'; - } - return 'Block: ' . $title . ' (' . $conf['module'] . '-' . $conf['delta'] . ')'; - case 'add button': - foreach (module_list() as $module) { - $module_blocks = module_invoke($module, 'block', 'list'); - if ($module_blocks) { - $array = array(); - foreach ($module_blocks as $delta => $block) { - // strip_tags used because it goes through check_plain and that - // just looks bad. - $array["$module-$delta"] = strip_tags($block['info']); - } - $options[$module] = $array; - } - } - $form['block'] = array( - '#type' => 'select', - '#options' => $options, - '#title' => t('Block'), - ); - $form['submit'] = array( - '#type' => 'button', - '#value' => t('Add block'), - ); - - $form['#prefix'] = '
'; - $form['#suffix'] = '
'; - return $form; - case 'add': - if ($_POST['op'] != t('Add block')) { - return; - } - $form = &$arg; - $conf = array(); - list($conf['module'], $conf['delta']) = explode('-', $form['block'], 2); - // take the data given to us and return a fully formed $area object. - return $conf; - case 'edit': - $conf = &$arg; - $form['module'] = array( - '#type' => 'hidden', - '#default_value' => $conf['module'], - ); - $form['delta'] = array( - '#type' => 'hidden', - '#default_value' => $conf['delta'], - ); - $form['override_title'] = array( - '#type' => 'checkbox', - '#default_value' => $conf['override_title'], - '#title' => t('Override title'), - '#description' => t('If checked, the block title will be overridden with the override title text.') - ); - $form['override_title_text'] = array( - '#type' => 'textfield', - '#default_value' => $conf['override_title_text'], - '#title' => t('Override title text'), - '#size' => 15, - ); - - return $form; - case 'validate': - // This one has nothing to validate. - $form_values = &$arg; - $form = $arg2; - return; - case 'save': - // For this one, the form values go directly into the config. - $form = &$arg; - return $form; - } -} + 'panels_content_block', + 'admin' => 'panels_admin_block', + ); + return $items; +} + +/** + * Output function for the 'block' content type. Outputs a block + * based on the module and delta supplied in the configuration. + */ +function panels_content_block($conf) { + $block = (object) module_invoke($conf['module'], 'block', 'view', $conf['delta']); + $block->module = $conf['module']; + $block->delta = $conf['delta']; + if (!empty($conf['override_title'])) { + $block->subject = check_plain($conf['override_title_text']); + } + + // Test for block visibility + $result = db_query("SELECT pages, visibility FROM {blocks} WHERE module = '%s' AND delta = %d", $block->module, $block->delta); + $block_visibility = db_fetch_object($result); + + if ($block_visibility && $block_visibility->pages) { + if ($block_visibility->visibility < 2) { + $path = drupal_get_path_alias($_GET['q']); + $regexp = '/^('. preg_replace(array('/(\r\n?|\n)/', '/\\\\\*/', '/(^|\|)\\\\($|\|)/'), array('|', '.*', '\1'. preg_quote(variable_get('site_frontpage', 'node'), '/') .'\2'), preg_quote($block->pages, '/')) .')$/'; + $page_match = !($block->visibility xor preg_match($regexp, $path)); + } + else { + $page_match = drupal_eval($block->pages); + } + } + else { + $page_match = TRUE; + } + + if ($page_match) { + return theme('block', $block); + } +} + +/** + * Callback to perform administrative functions on the content block + */ +function panels_admin_block($op, &$arg, $arg2 = NULL) { + switch ($op) { + case 'list': + $conf = $arg; + $block = module_invoke($conf['module'], 'block', 'list'); + $title = $block[$conf['delta']]['info']; + if (!empty($conf['override_title'])) { + $title .= ' ['. check_plain($conf['override_title_text']) .']'; + } + return 'Block: '. $title .' ('. $conf['module'] .'-'. $conf['delta'] .')'; + + case 'add button': + foreach (module_list() as $module) { + $module_blocks = module_invoke($module, 'block', 'list'); + if ($module_blocks) { + $array = array(); + foreach ($module_blocks as $delta => $block) { + // strip_tags used because it goes through check_plain and that + // just looks bad. + $array["$module-$delta"] = strip_tags($block['info']); + } + $options[$module] = $array; + } + } + $form['block'] = array( + '#type' => 'select', + '#options' => $options, + '#title' => t('Block'), + ); + $form['submit'] = array( + '#type' => 'button', + '#value' => t('Add block'), + ); + + $form['#prefix'] = '
'; + $form['#suffix'] = '
'; + return $form; + + case 'add': + if (isset($_POST['op']) && $_POST['op'] != t('Add block')) { + return; + } + // $form = &$arg; + $form = $arg; + $conf = array(); + if (!empty($form['block'])) { + list($conf['module'], $conf['delta']) = explode('-', $form['block'], 2); + } + // take the data given to us and return a fully formed $area object. + return $conf; + + case 'edit': + // $conf = &$arg; + $conf = $arg; + $form['module'] = array( + '#type' => 'hidden', + '#default_value' => $conf['module'], + ); + $form['delta'] = array( + '#type' => 'hidden', + '#default_value' => $conf['delta'], + ); + $form['override_title'] = array( + '#type' => 'checkbox', + '#default_value' => $conf['override_title'], + '#title' => t('Override title'), + '#description' => t('If checked, the block title will be overridden with the override title text.') + ); + $form['override_title_text'] = array( + '#type' => 'textfield', + '#default_value' => $conf['override_title_text'], + '#title' => t('Override title text'), + '#size' => 15, + ); + + return $form; + + case 'validate': + // This one has nothing to validate. + $form_values = &$arg; + $form = $arg2; + return; + + case 'save': + // For this one, the form values go directly into the config. + // $form = &$arg; + $form = $arg; + return $form; + } +} Index: modules/panels/content_types/views.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/panels/content_types/views.inc,v retrieving revision 1.4.2.4 diff -u -r1.4.2.4 views.inc --- modules/panels/content_types/views.inc 15 Mar 2007 23:29:31 -0000 1.4.2.4 +++ modules/panels/content_types/views.inc 8 Jan 2008 23:20:01 -0000 @@ -1,177 +1,183 @@ - 'panels_content_views', - 'admin' => 'panels_admin_views', - ); - return $items; - } - - /** - * Output function for the 'views' content type. Outputs a views - * based on the module and delta supplied in the configuration. - */ - function panels_content_views($conf) { - $view = views_get_view($conf['view']); - if ($view) { - if (function_exists('views_access') && !views_access($view)) { - return NULL; - } - - $arguments = explode('/', $_GET['q']); - $args = $conf['args']; - - foreach ($arguments as $id => $arg) { - $args = str_replace("%$id", $arg, $args); - } - - $args = preg_replace('/\\/%\d/', '', $args); - $args = $args ? explode('/', $args) : array(); - - if ($conf['url']) { - $view->url = $conf['url']; - } - - $content = views_build_view($conf['type'], $view, $args, intval($conf['pager_id']), intval($conf['nodes_per_page'])); - - $title = $conf['show_title'] ? views_get_title($view, $conf['type']) : NULL; - $output = theme('panels_content_views', $content, $title); - } - return $output; - } - - function theme_panels_content_views($content, $title) { - if ($title) { - $output .= '

' . $title . '

'; - } - $output .= $content; - return $output; - } - - /** - * Callback to perform administrative functions on the content views - */ - function panels_admin_views($op, &$arg, $arg2 = NULL) { - switch ($op) { - case 'list': - $conf = $arg; - $view = views_get_view($conf['view']); - return 'Views: ' . $view->name . ' (' . $view->description . ')'; - case 'add button': - $result = db_query("SELECT name, description FROM {view_view}"); - while ($view = db_fetch_object($result)) { - $views[$view->name] = $view->name . ': ' . $view->description; - } - - views_load_cache(); - $default_views = _views_get_default_views(); - $views_status = variable_get('views_defaults', array()); - foreach ($default_views as $view) { - if (!$views[$view->name] && - ($views_status[$view->name] == 'enabled' || (!$views_status[$view->name] && !$view->disabled))) { - $views[$view->name] = check_plain($view->name . ': ' . $view->description); - } - } - - ksort($views); - - $form['view'] = array( - '#type' => 'select', - '#options' => $views, - '#title' => t('Choose a view from the views module'), - ); - $form['submit'] = array( - '#type' => 'button', - '#value' => t('Add view'), - ); - - $form['#prefix'] = '
'; - $form['#suffix'] = '
'; - return $form; - case 'add': - if ($_POST['op'] != t('Add view')) { - return; - } - $conf = $arg; - $view = views_get_view($conf['view']); - if ($view->page) { - $conf['type'] = 'page'; - $conf['nodes_per_page'] = $view->nodes_per_page; - } - else { - $conf['type'] = 'block'; - $conf['nodes_per_page'] = $view->nodes_per_block; - } - $conf['pager_id'] = 0; - return $conf; - case 'edit': - $conf = &$arg; - $form['view'] = array( - '#type' => 'hidden', - '#default_value' => $conf['view'], - ); - $form['type'] = array( - '#type' => 'select', - '#default_value' => $conf['type'], - '#title' => t('View type'), - '#description' => t('Select which type of the view to display.'), - '#options' => array('page' => t('Page'), 'block' => t('Block'), 'embed' => t('Embedded')), - ); - $form['pager_id'] = array( - '#type' => 'textfield', - '#default_value' => $conf['pager_id'], - '#title' => t('Pager ID'), - '#size' => 4, - '#description' => t('Select the numeric pager ID to use, or 0 to not have use paging. Select "1" if you aren\'t sure what this means'), - ); - - $form['nodes_per_page'] = array( - '#type' => 'textfield', - '#default_value' => $conf['nodes_per_page'], - '#title' => t('Posts to Display'), - '#size' => 4, - '#description' => t('Select the number of posts to display, or 0 to display all results.'), - ); - - $form['args'] = array( - '#type' => 'textfield', - '#default_value' => $conf['args'], - '#title' => t('View arguments'), - '#size' => 12, - '#description' => t('Arguments to send to the view as if they were part of the URL in the form of arg1/arg2/arg3. You can use %0, %1, %2, etc, to use arguments from the actual URL. For example, if your panel URL is foo/bar, and someone hits foo/bar/5 use %2 to get the 5.'), - ); - - $form['url'] = array( - '#type' => 'textfield', - '#default_value' => $conf['url'], - '#title' => t('Override URL'), - '#size' => 12, - '#description' => t('If this is set, override the View URL; this can sometimes be useful to set to the panel URL'), - ); - - $form['show_title'] = array( - '#type' => 'checkbox', - '#default_value' => $conf['show_title'], - '#title' => t('Display view title'), - '#description' => t('If checked, the title of the view will be displayed.'), - ); - - return $form; - case 'validate': - // This one has nothing to validate. - $form_values = &$arg; - $form = $arg2; - return; - case 'save': - // For this one, the form values go directly into the config. - $form = &$arg; - return $form; - } - } - -} + 'panels_content_views', + 'admin' => 'panels_admin_views', + ); + return $items; + } + + /** + * Output function for the 'views' content type. Outputs a views + * based on the module and delta supplied in the configuration. + */ + function panels_content_views($conf) { + $view = views_get_view($conf['view']); + if (!empty($view)) { + if (function_exists('views_access') && !views_access($view)) { + return NULL; + } + + $arguments = explode('/', $_GET['q']); + $args = $conf['args']; + + foreach ($arguments as $id => $arg) { + $args = str_replace("%$id", $arg, $args); + } + + $args = preg_replace('/\\/%\d/', '', $args); + $args = $args ? explode('/', $args) : array(); + + if (!empty($conf['url'])) { + $view->url = $conf['url']; + } + + $content = views_build_view($conf['type'], $view, $args, intval($conf['pager_id']), intval($conf['nodes_per_page'])); + + $title = $conf['show_title'] ? views_get_title($view, $conf['type']) : NULL; + $output = theme('panels_content_views', $content, $title); + } + return $output; + } + + function theme_panels_content_views($content, $title) { + $output = ''; + if (!empty($title)) { + $output .= '

'. $title .'

'; + } + $output .= $content; + return $output; + } + + /** + * Callback to perform administrative functions on the content views + */ + function panels_admin_views($op, &$arg, $arg2 = NULL) { + switch ($op) { + case 'list': + $conf = $arg; + $view = views_get_view($conf['view']); + return 'Views: '. $view->name .' ('. $view->description .')'; + + case 'add button': + $result = db_query("SELECT name, description FROM {view_view}"); + while ($view = db_fetch_object($result)) { + $views[$view->name] = $view->name .': '. $view->description; + } + + views_load_cache(); + $default_views = _views_get_default_views(); + $views_status = variable_get('views_defaults', array()); + foreach ($default_views as $view) { + if (!$views[$view->name] && + ($views_status[$view->name] == 'enabled' || (!$views_status[$view->name] && !$view->disabled))) { + $views[$view->name] = check_plain($view->name .': '. $view->description); + } + } + + ksort($views); + + $form['view'] = array( + '#type' => 'select', + '#options' => $views, + '#title' => t('Choose a view from the views module'), + ); + $form['submit'] = array( + '#type' => 'button', + '#value' => t('Add view'), + ); + $form['#prefix'] = '
'; + $form['#suffix'] = '
'; + return $form; + + case 'add': + if (isset($_POST['op']) && $_POST['op'] != t('Add view')) { + return; + } + $conf = $arg; + $view = views_get_view($conf['view']); + if ($view->page) { + $conf['type'] = 'page'; + $conf['nodes_per_page'] = $view->nodes_per_page; + } + else { + $conf['type'] = 'block'; + $conf['nodes_per_page'] = $view->nodes_per_block; + } + $conf['pager_id'] = 0; + return $conf; + + case 'edit': + $conf = &$arg; + $form['view'] = array( + '#type' => 'hidden', + '#default_value' => $conf['view'], + ); + $form['type'] = array( + '#type' => 'select', + '#default_value' => $conf['type'], + '#title' => t('View type'), + '#description' => t('Select which type of the view to display.'), + '#options' => array( + 'page' => t('Page'), + 'block' => t('Block'), + 'embed' => t('Embedded') + ), + ); + $form['pager_id'] = array( + '#type' => 'textfield', + '#default_value' => $conf['pager_id'], + '#title' => t('Pager ID'), + '#size' => 4, + '#description' => t('Select the numeric pager ID to use, or 0 to not have use paging. Select "1" if you aren\'t sure what this means'), + ); + $form['nodes_per_page'] = array( + '#type' => 'textfield', + '#default_value' => $conf['nodes_per_page'], + '#title' => t('Posts to Display'), + '#size' => 4, + '#description' => t('Select the number of posts to display, or 0 to display all results.'), + ); + $form['args'] = array( + '#type' => 'textfield', + '#default_value' => $conf['args'], + '#title' => t('View arguments'), + '#size' => 12, + '#description' => t('Arguments to send to the view as if they were part of the URL in the form of arg1/arg2/arg3. You can use %0, %1, %2, etc, to use arguments from the actual URL. For example, if your panel URL is foo/bar, and someone hits foo/bar/5 use %2 to get the 5.'), + ); + $form['url'] = array( + '#type' => 'textfield', + '#default_value' => $conf['url'], + '#title' => t('Override URL'), + '#size' => 12, + '#description' => t('If this is set, override the View URL; this can sometimes be useful to set to the panel URL'), + ); + $form['show_title'] = array( + '#type' => 'checkbox', + '#default_value' => $conf['show_title'], + '#title' => t('Display view title'), + '#description' => t('If checked, the title of the view will be displayed.'), + ); + return $form; + + case 'validate': + // This one has nothing to validate. + $form_values = &$arg; + $form = $arg2; + return; + + case 'save': + // For this one, the form values go directly into the config. + $form = &$arg; + return $form; + } + } + +} Index: modules/panels/layouts/threecol_25_50_25.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/panels/layouts/threecol_25_50_25.inc,v retrieving revision 1.4 diff -u -r1.4 threecol_25_50_25.inc --- modules/panels/layouts/threecol_25_50_25.inc 22 Aug 2006 23:54:20 -0000 1.4 +++ modules/panels/layouts/threecol_25_50_25.inc 8 Jan 2008 23:20:05 -0000 @@ -1,44 +1,47 @@ - 'panels', - 'title' => t('Three column 25/50/25'), - 'icon' => 'layouts/threecol_25_50_25.png', - 'theme' => 'panels_threecol_25_50_25', - 'css' => 'layouts/threecol_25_50_25.css', - 'content areas' => array('left' => t('Left side'), 'middle' => t('Middle column'), 'right' => t('Right side')), - ); - - return $items; -} - -/** - * This function uses heredoc notation to make it easier to convert - * to a template. - */ -function theme_panels_threecol_25_50_25($id, $content) { - if ($id) { - $idstr = " id='$id'"; - } - - $output = << -
-
$content[left]
-
- -
-
$content[middle]
-
- -
-
$content[right]
-
- -
-EOT; - return $output; -} + 'panels', + 'title' => t('Three column 25/50/25'), + 'icon' => 'layouts/threecol_25_50_25.png', + 'theme' => 'panels_threecol_25_50_25', + 'css' => 'layouts/threecol_25_50_25.css', + 'content areas' => array('left' => t('Left side'), 'middle' => t('Middle column'), 'right' => t('Right side')), + ); + + return $items; +} + +/** + * This function uses heredoc notation to make it easier to convert + * to a template. + */ +function theme_panels_threecol_25_50_25($id, $content) { + $idstr = ''; + if (!empty($id)) { + $idstr = " id='$id'"; + } + + $output = << +
+
$content[left]
+
+ +
+
$content[middle]
+
+ +
+
$content[right]
+
+ +
+EOT; + return $output; +} Index: modules/panels/layouts/threecol_33_34_33_stacked.css =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/panels/layouts/threecol_33_34_33_stacked.css,v retrieving revision 1.4 diff -u -r1.4 threecol_33_34_33_stacked.css --- modules/panels/layouts/threecol_33_34_33_stacked.css 22 Aug 2006 23:54:20 -0000 1.4 +++ modules/panels/layouts/threecol_33_34_33_stacked.css 8 Jan 2008 23:20:05 -0000 @@ -1,29 +1,29 @@ -/* $Id: threecol_33_34_33_stacked.css,v 1.4 2006/08/22 23:54:20 merlinofchaos Exp $ */ - -.panel-3col-33-stacked { - /* border: 1px solid red; */ - overflow: hidden; -} -.panel-3col-33-stacked div div { - margin: .5em; -} -.panel-3col-33-stacked .panel-col-top, -.panel-3col-33-stacked .panel-col-bottom { - width: 100%; - clear: both; -} -.panel-3col-33-stacked .panel-col-first { - float: left; - width: 33%; -} -.panel-3col-33-stacked .panel-col { - float: left; - width: 34%; -} -.panel-3col-33-stacked .panel-col-last { - float: left; - width: 33%; -} -.panel-clearer { - clear: both; -} +/* $Id: threecol_33_34_33_stacked.css,v 1.4 2006/08/22 23:54:20 merlinofchaos Exp $ */ + +.panel-3col-33-stacked { + /* border: 1px solid red; */ + overflow: hidden; +} +.panel-3col-33-stacked div div { + margin: .5em; +} +.panel-3col-33-stacked .panel-col-top, +.panel-3col-33-stacked .panel-col-bottom { + width: 100%; + clear: both; +} +.panel-3col-33-stacked .panel-col-first { + float: left; + width: 33%; +} +.panel-3col-33-stacked .panel-col { + float: left; + width: 34%; +} +.panel-3col-33-stacked .panel-col-last { + float: left; + width: 33%; +} +.panel-clearer { + clear: both; +} Index: modules/panels/layouts/threecol_33_34_33_stacked.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/panels/layouts/threecol_33_34_33_stacked.inc,v retrieving revision 1.5 diff -u -r1.5 threecol_33_34_33_stacked.inc --- modules/panels/layouts/threecol_33_34_33_stacked.inc 22 Aug 2006 23:54:20 -0000 1.5 +++ modules/panels/layouts/threecol_33_34_33_stacked.inc 8 Jan 2008 23:20:05 -0000 @@ -1,52 +1,53 @@ - 'panels', - 'title' => t('Three column 33/34/33 stacked'), - 'icon' => 'layouts/threecol_33_34_33_stacked.png', - 'theme' => 'panels_threecol_33_34_33_stacked', - 'css' => 'layouts/threecol_33_34_33_stacked.css', - 'content areas' => array('top' => t('Top'), 'left' => t('Left side'), 'middle' => t('Middle column'), 'right' => t('Right side'), 'bottom' => t('Bottom')), - ); - - return $items; -} - -/** - * This function uses heredoc notation to make it easier to convert - * to a template. - */ -function theme_panels_threecol_33_34_33_stacked($id, $content) { - if ($id) { - $idstr = " id='$id'"; - } - - $output = << -
-
$content[top]
-
-
-
$content[left]
-
- -
-
$content[middle]
-
- -
-
$content[right]
-
-
-
$content[bottom]
-
- -
-EOT; - return $output; -} + 'panels', + 'title' => t('Three column 33/34/33 stacked'), + 'icon' => 'layouts/threecol_33_34_33_stacked.png', + 'theme' => 'panels_threecol_33_34_33_stacked', + 'css' => 'layouts/threecol_33_34_33_stacked.css', + 'content areas' => array('top' => t('Top'), 'left' => t('Left side'), 'middle' => t('Middle column'), 'right' => t('Right side'), 'bottom' => t('Bottom')), + ); + + return $items; +} + +/** + * This function uses heredoc notation to make it easier to convert + * to a template. + */ +function theme_panels_threecol_33_34_33_stacked($id, $content) { + $idstr = ''; + if (!empty($id)) { + $idstr = " id='$id'"; + } + + $output = << +
+
$content[top]
+
+
+
$content[left]
+
+ +
+
$content[middle]
+
+ +
+
$content[right]
+
+
+
$content[bottom]
+
+ +
+EOT; + return $output; +} Index: modules/panels/layouts/threecol_25_50_25.css =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/panels/layouts/threecol_25_50_25.css,v retrieving revision 1.3 diff -u -r1.3 threecol_25_50_25.css --- modules/panels/layouts/threecol_25_50_25.css 22 Aug 2006 23:54:20 -0000 1.3 +++ modules/panels/layouts/threecol_25_50_25.css 8 Jan 2008 23:20:05 -0000 @@ -1,22 +1,22 @@ -.panel-3col { - /* border: 1px solid red; */ - overflow: hidden; -} -.panel-3col div div { - margin: .5em; -} -.panel-3col .panel-col-first { - float: left; - width: 25%; -} -.panel-3col .panel-col { - float: left; - width: 50%; -} -.panel-3col .panel-col-last { - float: left; - width: 25%; -} -.panel-clearer { - clear: both; -} +.panel-3col { + /* border: 1px solid red; */ + overflow: hidden; +} +.panel-3col div div { + margin: .5em; +} +.panel-3col .panel-col-first { + float: left; + width: 25%; +} +.panel-3col .panel-col { + float: left; + width: 50%; +} +.panel-3col .panel-col-last { + float: left; + width: 25%; +} +.panel-clearer { + clear: both; +} Index: modules/panels/layouts/threecol_25_50_25_stacked.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/panels/layouts/threecol_25_50_25_stacked.inc,v retrieving revision 1.5 diff -u -r1.5 threecol_25_50_25_stacked.inc --- modules/panels/layouts/threecol_25_50_25_stacked.inc 22 Aug 2006 23:54:20 -0000 1.5 +++ modules/panels/layouts/threecol_25_50_25_stacked.inc 8 Jan 2008 23:20:05 -0000 @@ -1,52 +1,53 @@ - 'panels', - 'title' => t('Three column 25/50/25 stacked'), - 'icon' => 'layouts/threecol_25_50_25_stacked.png', - 'theme' => 'panels_threecol_25_50_25_stacked', - 'css' => 'layouts/threecol_25_50_25_stacked.css', - 'content areas' => array('top' => t('Top'), 'left' => t('Left side'), 'middle' => t('Middle column'), 'right' => t('Right side'), 'bottom' => t('Bottom')), - ); - - return $items; -} - -/** - * This function uses heredoc notation to make it easier to convert - * to a template. - */ -function theme_panels_threecol_25_50_25_stacked($id, $content) { - if ($id) { - $idstr = " id='$id'"; - } - - $output = << -
-
$content[top]
-
-
-
$content[left]
-
- -
-
$content[middle]
-
- -
-
$content[right]
-
-
-
$content[bottom]
-
- -
-EOT; - return $output; -} + 'panels', + 'title' => t('Three column 25/50/25 stacked'), + 'icon' => 'layouts/threecol_25_50_25_stacked.png', + 'theme' => 'panels_threecol_25_50_25_stacked', + 'css' => 'layouts/threecol_25_50_25_stacked.css', + 'content areas' => array('top' => t('Top'), 'left' => t('Left side'), 'middle' => t('Middle column'), 'right' => t('Right side'), 'bottom' => t('Bottom')), + ); + + return $items; +} + +/** + * This function uses heredoc notation to make it easier to convert + * to a template. + */ +function theme_panels_threecol_25_50_25_stacked($id, $content) { + $idstr = ''; + if (!empty($id)) { + $idstr = " id='$id'"; + } + + $output = << +
+
$content[top]
+
+
+
$content[left]
+
+ +
+
$content[middle]
+
+ +
+
$content[right]
+
+
+
$content[bottom]
+
+ +
+EOT; + return $output; +} Index: modules/panels/layouts/twocol_stacked.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/panels/layouts/twocol_stacked.inc,v retrieving revision 1.5 diff -u -r1.5 twocol_stacked.inc --- modules/panels/layouts/twocol_stacked.inc 22 Aug 2006 23:54:20 -0000 1.5 +++ modules/panels/layouts/twocol_stacked.inc 8 Jan 2008 23:20:05 -0000 @@ -1,48 +1,49 @@ - 'panels', - 'title' => t('Two column stacked'), - 'icon' => 'layouts/twocol_stacked.png', - 'theme' => 'panels_twocol_stacked', - 'css' => 'layouts/twocol_stacked.css', - 'content areas' => array('top' => t('Top'), 'left' => t('Left side'), 'right' => t('Right side'), 'bottom' => t('Bottom')), - ); - - return $items; -} - -/** - * This function uses heredoc notation to make it easier to convert - * to a template. - */ -function theme_panels_twocol_stacked($id, $content) { - if ($id) { - $idstr = " id='$id'"; - } - - $output = << -
-
$content[top]
-
-
-
$content[left]
-
- -
-
$content[right]
-
-
-
$content[bottom]
-
- -
-EOT; - return $output; -} + 'panels', + 'title' => t('Two column stacked'), + 'icon' => 'layouts/twocol_stacked.png', + 'theme' => 'panels_twocol_stacked', + 'css' => 'layouts/twocol_stacked.css', + 'content areas' => array('top' => t('Top'), 'left' => t('Left side'), 'right' => t('Right side'), 'bottom' => t('Bottom')), + ); + + return $items; +} + +/** + * This function uses heredoc notation to make it easier to convert + * to a template. + */ +function theme_panels_twocol_stacked($id, $content) { + $idstr = ''; + if (!empty($id)) { + $idstr = " id='$id'"; + } + + $output = << +
+
$content[top]
+
+
+
$content[left]
+
+ +
+
$content[right]
+
+
+
$content[bottom]
+
+ +
+EOT; + return $output; +} Index: modules/panels/layouts/twocol.css =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/panels/layouts/twocol.css,v retrieving revision 1.4 diff -u -r1.4 twocol.css --- modules/panels/layouts/twocol.css 22 Aug 2006 23:54:20 -0000 1.4 +++ modules/panels/layouts/twocol.css 8 Jan 2008 23:20:05 -0000 @@ -1,22 +1,22 @@ -/* $Id: twocol.css,v 1.4 2006/08/22 23:54:20 merlinofchaos Exp $ */ - -.panel-2col { - /* border: 1px solid red; */ - overflow: hidden; -} - -.panel-2col div div { - margin: .5em; -} - -.panel-2col .panel-col-first { - float: left; - width: 50%; -} -.panel-2col .panel-col-last { - float: left; - width: 50%; -} -.panel-clearer { - clear: both; -} +/* $Id: twocol.css,v 1.4 2006/08/22 23:54:20 merlinofchaos Exp $ */ + +.panel-2col { + /* border: 1px solid red; */ + overflow: hidden; +} + +.panel-2col div div { + margin: .5em; +} + +.panel-2col .panel-col-first { + float: left; + width: 50%; +} +.panel-2col .panel-col-last { + float: left; + width: 50%; +} +.panel-clearer { + clear: both; +} Index: modules/panels/layouts/twocol_stacked.css =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/panels/layouts/twocol_stacked.css,v retrieving revision 1.4.4.1 diff -u -r1.4.4.1 twocol_stacked.css --- modules/panels/layouts/twocol_stacked.css 15 Mar 2007 20:16:53 -0000 1.4.4.1 +++ modules/panels/layouts/twocol_stacked.css 8 Jan 2008 23:20:05 -0000 @@ -1,27 +1,27 @@ -/* $Id: twocol_stacked.css,v 1.4.4.1 2007/03/15 20:16:53 merlinofchaos Exp $ */ - -.panel-2col-stacked { - /* border: 1px solid red; */ - overflow: hidden; -} - -.panel-2col-stacked div > div { - margin: .5px; -} - -.panel-2col-stacked .panel-col-top, -.panel-2col-stacked .panel-col-bottom { - width: 99.9%; - clear: both; -} -.panel-2col-stacked .panel-col-first { - float: left; - width: 47%; -} -.panel-2col-stacked .panel-col-last { - float: right; - width: 47%; -} -.panel-clearer { - clear: both; -} +/* $Id: twocol_stacked.css,v 1.4.4.1 2007/03/15 20:16:53 merlinofchaos Exp $ */ + +.panel-2col-stacked { + /* border: 1px solid red; */ + overflow: hidden; +} + +.panel-2col-stacked div > div { + margin: .5px; +} + +.panel-2col-stacked .panel-col-top, +.panel-2col-stacked .panel-col-bottom { + width: 99.9%; + clear: both; +} +.panel-2col-stacked .panel-col-first { + float: left; + width: 47%; +} +.panel-2col-stacked .panel-col-last { + float: right; + width: 47%; +} +.panel-clearer { + clear: both; +} Index: modules/panels/layouts/threecol_33_34_33.css =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/panels/layouts/threecol_33_34_33.css,v retrieving revision 1.4 diff -u -r1.4 threecol_33_34_33.css --- modules/panels/layouts/threecol_33_34_33.css 22 Aug 2006 23:54:20 -0000 1.4 +++ modules/panels/layouts/threecol_33_34_33.css 8 Jan 2008 23:20:05 -0000 @@ -1,24 +1,24 @@ -/* $Id: threecol_33_34_33.css,v 1.4 2006/08/22 23:54:20 merlinofchaos Exp $ */ - -.panel-3col-33 { - /* border: 1px solid red; */ - overflow: hidden; -} -.panel-3col-33 div div { - margin: .5em; -} -.panel-3col-33 .panel-col-first { - float: left; - width: 33%; -} -.panel-3col-33 .panel-col { - float: left; - width: 34%; -} -.panel-3col-33 .panel-col-last { - float: left; - width: 33%; -} -.panel-clearer { - clear: both; -} +/* $Id: threecol_33_34_33.css,v 1.4 2006/08/22 23:54:20 merlinofchaos Exp $ */ + +.panel-3col-33 { + /* border: 1px solid red; */ + overflow: hidden; +} +.panel-3col-33 div div { + margin: .5em; +} +.panel-3col-33 .panel-col-first { + float: left; + width: 33%; +} +.panel-3col-33 .panel-col { + float: left; + width: 34%; +} +.panel-3col-33 .panel-col-last { + float: left; + width: 33%; +} +.panel-clearer { + clear: both; +} Index: modules/panels/layouts/threecol_25_50_25_stacked.css =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/panels/layouts/threecol_25_50_25_stacked.css,v retrieving revision 1.3 diff -u -r1.3 threecol_25_50_25_stacked.css --- modules/panels/layouts/threecol_25_50_25_stacked.css 24 Jul 2006 23:56:08 -0000 1.3 +++ modules/panels/layouts/threecol_25_50_25_stacked.css 8 Jan 2008 23:20:05 -0000 @@ -1,26 +1,26 @@ -/* $Id: threecol_25_50_25_stacked.css,v 1.3 2006/07/24 23:56:08 merlinofchaos Exp $ */ - -.panel-3col-stacked { - /* border: 1px solid red; */ - overflow: hidden; -} -.panel-3col-stacked div div { - margin: .5em; -} -.panel-3col-stacked .panel-col-top, -.panel-3col-stacked .panel-col-bottom { - width: 100%; - clear: both; -} -.panel-3col-stacked .panel-col-first { - float: left; - width: 25%; -} -.panel-3col-stacked .panel-col { - float: left; - width: 50%; -} -.panel-3col-stacked .panel-col-last { - float: left; - width: 25%; -} +/* $Id: threecol_25_50_25_stacked.css,v 1.3 2006/07/24 23:56:08 merlinofchaos Exp $ */ + +.panel-3col-stacked { + /* border: 1px solid red; */ + overflow: hidden; +} +.panel-3col-stacked div div { + margin: .5em; +} +.panel-3col-stacked .panel-col-top, +.panel-3col-stacked .panel-col-bottom { + width: 100%; + clear: both; +} +.panel-3col-stacked .panel-col-first { + float: left; + width: 25%; +} +.panel-3col-stacked .panel-col { + float: left; + width: 50%; +} +.panel-3col-stacked .panel-col-last { + float: left; + width: 25%; +} Index: modules/panels/layouts/twocol.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/panels/layouts/twocol.inc,v retrieving revision 1.6 diff -u -r1.6 twocol.inc --- modules/panels/layouts/twocol.inc 22 Aug 2006 23:54:20 -0000 1.6 +++ modules/panels/layouts/twocol.inc 8 Jan 2008 23:20:05 -0000 @@ -1,41 +1,42 @@ - 'panels', - 'title' => t('Two column'), - 'icon' => 'layouts/twocol.png', - 'theme' => 'panels_twocol', - 'css' => 'layouts/twocol.css', - 'content areas' => array('left' => t('Left side'), 'right' => t('Right side')), - ); - - return $items; -} - -/** - * This function uses heredoc notation to make it easier to convert - * to a template. - */ -function theme_panels_twocol($id, $content) { - if ($id) { - $idstr = " id='$id'"; - } - - $output = << -
-
$content[left]
-
- -
-
$content[right]
-
- -
-EOT; - return $output; -} + 'panels', + 'title' => t('Two column'), + 'icon' => 'layouts/twocol.png', + 'theme' => 'panels_twocol', + 'css' => 'layouts/twocol.css', + 'content areas' => array('left' => t('Left side'), 'right' => t('Right side')), + ); + + return $items; +} + +/** + * This function uses heredoc notation to make it easier to convert + * to a template. + */ +function theme_panels_twocol($id, $content) { + $idstr = ''; + if (!empty($id)) { + $idstr = " id='$id'"; + } + + $output = << +
+
$content[left]
+
+ +
+
$content[right]
+
+ +
+EOT; + return $output; +} Index: modules/panels/layouts/threecol_33_34_33.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/panels/layouts/threecol_33_34_33.inc,v retrieving revision 1.5 diff -u -r1.5 threecol_33_34_33.inc --- modules/panels/layouts/threecol_33_34_33.inc 22 Aug 2006 23:54:20 -0000 1.5 +++ modules/panels/layouts/threecol_33_34_33.inc 8 Jan 2008 23:20:05 -0000 @@ -1,45 +1,46 @@ - 'panels', - 'title' => t('Three column 33/34/33'), - 'icon' => 'layouts/threecol_33_34_33.png', - 'theme' => 'panels_threecol_33_34_33', - 'css' => 'layouts/threecol_33_34_33.css', - 'content areas' => array('left' => t('Left side'), 'middle' => t('Middle column'), 'right' => t('Right side')), - ); - - return $items; -} - -/** - * This function uses heredoc notation to make it easier to convert - * to a template. - */ -function theme_panels_threecol_33_34_33($id, $content) { - if ($id) { - $idstr = " id='$id'"; - } - - $output = << -
-
$content[left]
-
- -
-
$content[middle]
-
- -
-
$content[right]
-
- -
-EOT; - return $output; -} + 'panels', + 'title' => t('Three column 33/34/33'), + 'icon' => 'layouts/threecol_33_34_33.png', + 'theme' => 'panels_threecol_33_34_33', + 'css' => 'layouts/threecol_33_34_33.css', + 'content areas' => array('left' => t('Left side'), 'middle' => t('Middle column'), 'right' => t('Right side')), + ); + + return $items; +} + +/** + * This function uses heredoc notation to make it easier to convert + * to a template. + */ +function theme_panels_threecol_33_34_33($id, $content) { + $idstr = ''; + if (!empty($id)) { + $idstr = " id='$id'"; + } + + $output = << +
+
$content[left]
+
+ +
+
$content[middle]
+
+ +
+
$content[right]
+
+ +
+EOT; + return $output; +} Index: modules/panels/panels.install =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/panels/panels.install,v retrieving revision 1.1.4.4 diff -u -r1.1.4.4 panels.install --- modules/panels/panels.install 3 Apr 2007 16:36:05 -0000 1.1.4.4 +++ modules/panels/panels.install 8 Jan 2008 23:20:00 -0000 @@ -2,83 +2,107 @@ // $Id: panels.install,v 1.1.4.4 2007/04/03 16:36:05 merlinofchaos Exp $ /** - * Install the panels tables + * Implementation of hook_install(). */ function panels_install() { - switch ($GLOBALS['dbtype']) { - case 'pgsql': - db_query(<< 'serial', 'not null' => TRUE)); + return $ret; } + +/** + * Implementation of hook_schema(). + */ +function panels_schema() { + + $schema['panels_info'] = array( + 'fields' => array( + 'did' => array( + 'description' => t('Primary key: Unique panel ID.'), + 'type' => 'serial', + 'not null' => TRUE, + ), + 'title' => array( + 'description' => t('Title of this panel.'), + 'type' => 'varchar', + 'length' => '128', + 'not null' => FALSE + ), + 'access' => array( + 'description' => t('List of roles that will be able to see this panel in any form.'), + 'type' => 'varchar', + 'length' => '128', + 'not null' => FALSE + ), + 'path' => array( + 'description' => t('The URL path to give this page.'), + 'type' => 'varchar', + 'length' => '128', + 'not null' => FALSE + ), + 'css_id' => array( + 'description' => t('The CSS ID to apply to this page.'), + 'type' => 'varchar', + 'length' => '128', + 'not null' => FALSE + ), + 'layout' => array( + 'description' => t('Name of layout used by the panel.'), + 'type' => 'varchar', + 'length' => '32', + 'not null' => FALSE + ) + ), + 'primary key' => array('did'), + ); + + $schema['panels_area'] = array( + 'fields' => array( + 'did' => array( + 'description' => t('Unique panel ID.'), + 'type' => 'int', + 'not null' => TRUE, + 'default' => 0, + ), + 'area' => array( + 'type' => 'varchar', + 'length' => '32', + 'not null' => FALSE + ), + 'type' => array( + 'description' => t('Content area name'), + 'type' => 'varchar', + 'length' => '32', + 'not null' => FALSE + ), + 'configuration' => array( + 'type' => 'text', + 'size' => 'big', + 'not null' => FALSE + ), + 'position' => array( + 'type' => 'int', + 'not null' => FALSE, + ) + ), + 'indexes' => array( + 'did' => array('did') + ), + ); + + return $schema; +} \ No newline at end of file Index: modules/panels/panels.info =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/panels/panels.info,v retrieving revision 1.2.2.1 diff -u -r1.2.2.1 panels.info --- modules/panels/panels.info 18 Jun 2007 23:06:56 -0000 1.2.2.1 +++ modules/panels/panels.info 8 Jan 2008 23:20:00 -0000 @@ -1,4 +1,4 @@ ; $Id: panels.info,v 1.2.2.1 2007/06/18 23:06:56 dww Exp $ name = Panels description = Create pages that are divided into areas of the page. - +core = 6.x Index: modules/panels/API.txt =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/panels/API.txt,v retrieving revision 1.2 diff -u -r1.2 API.txt --- modules/panels/API.txt 26 Jul 2006 16:53:40 -0000 1.2 +++ modules/panels/API.txt 8 Jan 2008 23:20:00 -0000 @@ -1,125 +1,125 @@ -The API for expanding the panels module comes in two pieces. First there is the -layout API, which adds to the list of layouts you need. Second is the content -types API, which lets modules supply content to the panels. Natively, panels -module supports the content types of 'block', which just renders the output -of a block, 'node' which simply renders a node_view, 'custom' which allows the -user to enter custom content with filtering, and finally 'views' because I -wrote them both. - -Where to put your code: -======================= - -With both types, there are two ways to implement a new type. First, you can -implement the hook in your module and provide the necessary data. Or you -can create a .inc file in the right format, and drop it into the proper -directory in the panels module. Both are very similar, and only requires -a minor naming adjustment. - -When using the .inc file, in place of 'hook' in the various hooks, use -panels_FILENAME. - -Creating a new Layout Type: -=========================== - -A layout consists of 4 things: - -1) A bit of HTML in a theme function. I use heredoc notation to make it - extra easy to convert these to .tpl.inc files in case they are to - be overridden in php template. -2) A bit of CSS to describe how the layout should be, well, laid out. -3) An icon that is 50x75 which gives the user a visual indication of - what the layout looks like. -4) An implementation of hook_panels_layouts() to tell panels the necessary - information. - -hook_panels_layouts returns an array with the following information: - -'module' => The module name providing this. This is necessary because it - uses drupal_get_path('module', $module) to get the proper - path for included CSS. -'title' => The title of the layout presented to the user. Use t(). -'icon' => The filename of the icon to use when listing avialable layouts. -'theme' => The theme function that contains the HTML, without the theme_ - part. -'css' => The CSS file. -'content areas' => an array in the form of 'name' => t('Title') of content - areas supported by the layout. For example, the simple - 2 column layout uses array('left' => t('Left side'), - 'right' => t('Right side')); -- the name is the internal - identifier. Your theme function will see it as - $content['name'] (so twocol gets $content['left'] and - $content['right']). - - -Creating a new Content Type: -============================ - -Content types require 1 hook and two callbacks. The hook defines what content -types are available, the first callback displays the content in a dashboard, -and the other callback does all of the administrative functions. - -hook_panels_content_types returns an array with the following information: -'callback' => The function to display the content. -'admin' => The function to administer the content. - -The callback function receives one argument: The $configuration array, as -defined by the administrative callback. - -The administrative callback recieves 3 arguments: - -$op -- the operation to perform. See below. -&$arg1 -- The first argument should be a reference and its meaning varies - based on the op. -$arg2 -- The second argument is optional, not a reference, and should - default to NULL. - -Administrative operations: - -'list': $arg1 is the configuration array. - This op is called when panels lists what content is in a content - area. It generally returns something similar to this: - return 'Views: ' . $view->name . ' (' . $view->description . ')'; - -'add button': arguments not used here. - This op is called to display the 'add content type' button; it can also - display additional information (such as the list of blocks or the - autocomplete to select a node). - - The actual button should look something like this: - $form['submit'] = array( - '#type' => 'button', - '#value' => t('Add view'), - ); - - And it's a good idea to do this, but it's not required: - - $form['#prefix'] = '
'; - $form['#suffix'] = '
'; - -'add': $arg1 == the $configuration array - This op is called to see if your add button has been clicked. It *must* - start off by checking to see if this is true: - - if ($_POST['op'] != t('Add view')) { - return; - } - - If it is true, it should process that information and return a $configuration - array populated from whatever other form items were presented in 'add button' - and whatever defaults make sense. - -'edit': $arg1 == the $configuration array - This op is called to provide an edit form for a content type. It *must* - ensure *all* information from the conf array is available, even if it - is just hidden; panels has no way to remember this data between form - clicks, so any data not put here will be lost. No buttons need to be - added to the form. - -'validate': $arg1 == $form_values, $arg2 == $form - Called to validate the 'edit' form above. - -'save': $arg1 == $form_values - Called to convert a $form_values back into a $configuration array. All - of the default types just send $form_values back as $configuration, - but if you need to do some kind of transformation, this is where it - happens. +The API for expanding the panels module comes in two pieces. First there is the +layout API, which adds to the list of layouts you need. Second is the content +types API, which lets modules supply content to the panels. Natively, panels +module supports the content types of 'block', which just renders the output +of a block, 'node' which simply renders a node_view, 'custom' which allows the +user to enter custom content with filtering, and finally 'views' because I +wrote them both. + +Where to put your code: +======================= + +With both types, there are two ways to implement a new type. First, you can +implement the hook in your module and provide the necessary data. Or you +can create a .inc file in the right format, and drop it into the proper +directory in the panels module. Both are very similar, and only requires +a minor naming adjustment. + +When using the .inc file, in place of 'hook' in the various hooks, use +panels_FILENAME. + +Creating a new Layout Type: +=========================== + +A layout consists of 4 things: + +1) A bit of HTML in a theme function. I use heredoc notation to make it + extra easy to convert these to .tpl.inc files in case they are to + be overridden in php template. +2) A bit of CSS to describe how the layout should be, well, laid out. +3) An icon that is 50x75 which gives the user a visual indication of + what the layout looks like. +4) An implementation of hook_panels_layouts() to tell panels the necessary + information. + +hook_panels_layouts returns an array with the following information: + +'module' => The module name providing this. This is necessary because it + uses drupal_get_path('module', $module) to get the proper + path for included CSS. +'title' => The title of the layout presented to the user. Use t(). +'icon' => The filename of the icon to use when listing avialable layouts. +'theme' => The theme function that contains the HTML, without the theme_ + part. +'css' => The CSS file. +'content areas' => an array in the form of 'name' => t('Title') of content + areas supported by the layout. For example, the simple + 2 column layout uses array('left' => t('Left side'), + 'right' => t('Right side')); -- the name is the internal + identifier. Your theme function will see it as + $content['name'] (so twocol gets $content['left'] and + $content['right']). + + +Creating a new Content Type: +============================ + +Content types require 1 hook and two callbacks. The hook defines what content +types are available, the first callback displays the content in a dashboard, +and the other callback does all of the administrative functions. + +hook_panels_content_types returns an array with the following information: +'callback' => The function to display the content. +'admin' => The function to administer the content. + +The callback function receives one argument: The $configuration array, as +defined by the administrative callback. + +The administrative callback recieves 3 arguments: + +$op -- the operation to perform. See below. +&$arg1 -- The first argument should be a reference and its meaning varies + based on the op. +$arg2 -- The second argument is optional, not a reference, and should + default to NULL. + +Administrative operations: + +'list': $arg1 is the configuration array. + This op is called when panels lists what content is in a content + area. It generally returns something similar to this: + return 'Views: ' . $view->name . ' (' . $view->description . ')'; + +'add button': arguments not used here. + This op is called to display the 'add content type' button; it can also + display additional information (such as the list of blocks or the + autocomplete to select a node). + + The actual button should look something like this: + $form['submit'] = array( + '#type' => 'button', + '#value' => t('Add view'), + ); + + And it's a good idea to do this, but it's not required: + + $form['#prefix'] = '
'; + $form['#suffix'] = '
'; + +'add': $arg1 == the $configuration array + This op is called to see if your add button has been clicked. It *must* + start off by checking to see if this is true: + + if ($_POST['op'] != t('Add view')) { + return; + } + + If it is true, it should process that information and return a $configuration + array populated from whatever other form items were presented in 'add button' + and whatever defaults make sense. + +'edit': $arg1 == the $configuration array + This op is called to provide an edit form for a content type. It *must* + ensure *all* information from the conf array is available, even if it + is just hidden; panels has no way to remember this data between form + clicks, so any data not put here will be lost. No buttons need to be + added to the form. + +'validate': $arg1 == $form_values, $arg2 == $form + Called to validate the 'edit' form above. + +'save': $arg1 == $form_values + Called to convert a $form_values back into a $configuration array. All + of the default types just send $form_values back as $configuration, + but if you need to do some kind of transformation, this is where it + happens. Index: modules/panels/README.txt =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/panels/README.txt,v retrieving revision 1.4.4.1 diff -u -r1.4.4.1 README.txt --- modules/panels/README.txt 15 Mar 2007 19:16:32 -0000 1.4.4.1 +++ modules/panels/README.txt 8 Jan 2008 23:20:00 -0000 @@ -1,26 +1,26 @@ -The panels module is the ideological son, successor to and almost complete -replacement for the dashboard module. This module allows you to create pages -that are divided into areas of the page. Where the dashboard module only gave -four areas--top, bottom, left and right--this one is a completely flexible -system that includes a couple of 2 column and 3 column layouts by default, but -is also highly extensible and other layouts can be plugged in with a little HTML -and CSS knowledge, with just enough PHP knowledge to be able to edit an include -file without breaking it. - -Perhaps most importantly, unlike the dashboard module it requires no fiddling -with PHP code to include the things you want; the interface lets you add blocks, -nodes and custom content just by selecting and clicking. - -If you want to override the CSS of a panel, the easiest way is to just copy -the CSS into your theme directory and tweak; panels will look there before -including the CSS from the module, and if it exists, will not include the -module's CSS. If you want to just change a tiny bit but keep the basic -structure, just add your changes to your style.css instead. - -If you're having problems with IE and your panels falling below your sidebars, -try setting the width of the main panel area (example, .panel-2col-stacked) to -98%. - -If you need to check if the current page is a panels page in your theme -(for example if you want to hide some existing sidebars in your theme on +The panels module is the ideological son, successor to and almost complete +replacement for the dashboard module. This module allows you to create pages +that are divided into areas of the page. Where the dashboard module only gave +four areas--top, bottom, left and right--this one is a completely flexible +system that includes a couple of 2 column and 3 column layouts by default, but +is also highly extensible and other layouts can be plugged in with a little HTML +and CSS knowledge, with just enough PHP knowledge to be able to edit an include +file without breaking it. + +Perhaps most importantly, unlike the dashboard module it requires no fiddling +with PHP code to include the things you want; the interface lets you add blocks, +nodes and custom content just by selecting and clicking. + +If you want to override the CSS of a panel, the easiest way is to just copy +the CSS into your theme directory and tweak; panels will look there before +including the CSS from the module, and if it exists, will not include the +module's CSS. If you want to just change a tiny bit but keep the basic +structure, just add your changes to your style.css instead. + +If you're having problems with IE and your panels falling below your sidebars, +try setting the width of the main panel area (example, .panel-2col-stacked) to +98%. + +If you need to check if the current page is a panels page in your theme +(for example if you want to hide some existing sidebars in your theme on these pages) then you can use the panels_is_panels_page() function. \ No newline at end of file Index: modules/panels/panels.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/panels/panels.module,v retrieving revision 1.10.2.9 diff -u -r1.10.2.9 panels.module --- modules/panels/panels.module 15 Mar 2007 23:13:41 -0000 1.10.2.9 +++ modules/panels/panels.module 8 Jan 2008 23:20:00 -0000 @@ -4,13 +4,11 @@ /** * Implementation of hook_help() */ -function panels_help($section = '') { - switch ($section) { +function panels_help($path, $arg) { + switch ($path) { case 'admin/build/panels': case 'admin/build/panels/list': - return t('

You may peruse a list of your current panels layouts and edit them, or click add to create a new page.

'); - case 'admin/build/panels/add': - return t('

Choose a layout for your new page from the list below.

'); + return '

'. t('You may peruse a list of your current panels layouts and edit them, or click add to create a new page.'). '

'; } } @@ -36,7 +34,7 @@ } // All views with an empty access setting are available to all roles. - if (!$panel->access) { + if (!$panel->access) { return TRUE; } @@ -52,636 +50,155 @@ /** * Implementation of hook_menu() */ -function panels_menu($may_cache) { - if ($may_cache) { - $access = user_access('create panels'); - $items[] = array( - 'path' => 'admin/build/panels', - 'title' => t('Panels'), - 'access' => $access, - 'callback' => 'panels_list_page', - 'description' => t('Create pages on your site that are 2 or 3 columns'), - ); - $items[] = array( - 'path' => 'admin/build/panels/list', - 'title' => t('List'), - 'access' => $access, - 'callback' => 'panels_list_page', - 'weight' => -10, - 'type' => MENU_DEFAULT_LOCAL_TASK, - ); - $items[] = array( - 'path' => 'admin/build/panels/add', - 'title' => t('Add'), - 'access' => $access, - 'callback' => 'panels_add_page', - 'type' => MENU_LOCAL_TASK, - ); - $items[] = array( - 'path' => 'admin/build/panels/add/layout', - 'title' => t('Add'), - 'access' => $access, - 'callback' => 'panels_add_layout_page', - 'type' => MENU_LOCAL_TASK, - ); - $items[] = array( - 'path' => 'admin/build/panels/edit', - 'title' => t('Edit panels'), - 'access' => $access, - 'callback' => 'panels_edit_page', - 'type' => MENU_CALLBACK, - ); - $items[] = array( - 'path' => 'admin/build/panels/delete', - 'title' => t('Delete panels'), - 'access' => $access, - 'callback' => 'drupal_get_form', - 'callback arguments' => array('panels_delete_confirm'), - 'type' => MENU_CALLBACK, - ); +function panels_menu() { - $items[] = array( - 'path' => 'panels/node/autocomplete', - 'title' => t('Autocomplete node'), - 'callback' => 'panels_node_autocomplete', - 'access' => user_access('access content'), + $access = array('create panels'); + $items['admin/build/panels'] = array( + 'title' => 'Panels', + 'description' => 'Create pages on your site that are 2 or 3 columns', + 'page callback' => '_panels_list_page', + 'access arguments' => $access, + 'file' => 'panels.admin.inc', + ); + $items['admin/build/panels/list'] = array( + 'title' => 'List', + 'page callback' => '_panels_list_page', + 'access arguments' => $access, + 'weight' => -10, + 'type' => MENU_DEFAULT_LOCAL_TASK, + 'file' => 'panels.admin.inc', + ); + $items['admin/build/panels/add'] = array( + 'title' => 'Add', + 'access arguments' => $access, + 'page callback' => 'drupal_get_form', + 'page arguments' => array('panels_add_page_form'), + 'type' => MENU_LOCAL_TASK, + 'file' => 'panels.admin.inc', + ); + $items['admin/build/panels/add/%/page'] = array( + 'title' => 'Select panels layout', + 'access arguments' => $access, + 'page callback' => 'drupal_get_form', + 'page arguments' => array('panels_add_page_form', 4), + 'type' => MENU_CALLBACK, + 'file' => 'panels.admin.inc', + ); + /* FIXME: Looks like dead code!? + $items['admin/build/panels/add/layout'] = array( + 'title' => 'Add', + 'access arguments' => $access, + 'page callback' => 'drupal_get_form', + 'page arguments' => array('panels_add_layout_form'), + 'type' => MENU_LOCAL_TASK, + ); */ + $items['admin/build/panels/edit/%panels'] = array( + 'title' => 'Edit panels', + 'access arguments' => $access, + 'page callback' => 'drupal_get_form', + 'page arguments' => array('panels_edit_form', 4), + 'type' => MENU_CALLBACK, + 'file' => 'panels.admin.inc', + ); + $items['admin/build/panels/delete/%panels'] = array( + 'title' => 'Delete panels', + 'access arguments' => $access, + 'page callback' => 'drupal_get_form', + 'page arguments' => array('panels_delete_form', 4), + 'type' => MENU_CALLBACK, + 'file' => 'panels.admin.inc', + ); + + $items['panels/node/autocomplete'] = array( + 'title' => 'Autocomplete node', + 'page callback' => '_panels_node_autocomplete', + 'access arguments' => array('access content'), + 'type' => MENU_CALLBACK, + 'file' => 'panels.admin.inc', + ); + + // load panels from database + $result = db_query("SELECT * FROM {panels_info}"); + // FIXME: Fow now we're making these all callbacks, but we + // should steal code from Views so they can be normal, tabs, + // etc + while ($panels = db_fetch_object($result)) { + // FIXME: $panels->access = ($panels->access ? explode(', ', $panels->access) : array()); + $items[$panels->path] = array( + 'title' => filter_xss_admin($panels->title), + 'access callback' => panels_access($panels), + 'page callback' => '_panels_panels_page', + 'page arguments' => array($panels->did), 'type' => MENU_CALLBACK ); - - // load panels from database - $result = db_query("SELECT * FROM {panels_info}"); - // FIXME: Fow now we're making these all callbacks, but we - // should steal code from Views so they can be normal, tabs, - // etc - while ($panels = db_fetch_object($result)) { - $panels->access = ($panels->access ? explode(', ', $panels->access) : array()); - $items[] = array( - 'path' => $panels->path, - 'title' => filter_xss_admin($panels->title), - 'access' => panels_access($panels), - 'callback' => 'panels_panels_page', - 'callback arguments' => array($panels->did), - 'type' => MENU_CALLBACK - ); - } - } - return $items; -} - -/** - * panels path helper function - */ -function panels_get_file_path($module, $file, $base_path = true) { - if ($base_path) { - $output = base_path(); } - return $output . drupal_get_path('module', $module) . '/' . $file; -} - -// --------------------------------------------------------------------------- -// panels custom image button - -/** - * Custom form element to do our nice images. - */ -function panels_elements() { - $type['panels_imagebutton'] = array('#input' => TRUE, '#button_type' => 'submit',); - return $type; -} - -/** - * Theme our image button. - */ -function theme_panels_imagebutton($element) { - return '\n"; -} - -function panels_imagebutton_value() { - // null function guarantees default_value doesn't get moved to #value. -} - -/** - * Add a single button to a form. - */ -function panels_add_button($image, $name, $text) { - $module_path = base_path() . drupal_get_path('module', 'panels'); - - return array( - '#type' => 'panels_imagebutton', - '#image' => $module_path . '/images/' . $image, - '#title' => $text, - '#default_value' => $name, - ); -} -/** - * Set a button to a blank image -- used for placeholders when buttons are - * not relevant but just removing it would be visually unappealing. - */ -function panels_set_blank(&$form) { - $form['#type'] = 'markup'; - $form['#value'] = theme('image', drupal_get_path('module', 'panels') . '/images/blank.gif'); + return $items; } -// --------------------------------------------------------------------------- -// panels administrative pages - /** - * Provide a list of panels, with links to edit or delete them. - */ -function panels_list_page() { - $result = db_query("SELECT * FROM {panels_info} ORDER BY title"); - while ($panels = db_fetch_object($result)) { - $item = array(); - $item[] = check_plain($panels->title); - $item[] = l($panels->path, $panels->path); - $item[] = implode(' | ', array( - l(t('Edit'), "admin/build/panels/edit/$panels->did"), - l(t('Delete'), "admin/build/panels/delete/$panels->did"), - )); - $items[] = $item; - } - $header = array( - t('Panel title'), - t('URL'), - t('Operations'), - ); - $output = theme('table', $header, $items); - return $output; -} - -/* - * Provide a form to confirm deletion of a panel page. + * Menu helper function to verifies panel existence and loads panels data. */ -function panels_delete_confirm($did = '') { - $panels = panels_load_panels($did); - - if (!$panels) { - drupal_goto('admin/build/panels'); - } - - $form['did'] = array('#type' => 'value', '#value' => $panels->did); - return confirm_form( $form, - t('Are you sure you want to delete %title?', array('%title' => $panels->title)), - $_GET['destination'] ? $_GET['destination'] : 'admin/build/panels', - t('This action cannot be undone.'), - t('Delete'), t('Cancel') - ); -} - -/* - * Handle the submit button to delete a panel page. - */ -function panels_delete_confirm_submit($formid, $form) { - if ($form['confirm']) { - panels_delete_panels((object) $form); - return 'admin/build/panels'; - } +function panels_load($did) { + return _panels_load_panels($did); } /** - * Handle the add panels page + * panels path helper function */ -function panels_add_page($layout = NULL) { - $layouts = panels_get_layouts(); - drupal_add_css(drupal_get_path('module', 'panels') . '/panels_admin.css'); - if (!$layout) { - foreach ($layouts as $id => $layout) { - if (!$default_id) { - // grab the first one for our default. - $default_id = $id; - } - $file = panels_get_file_path($layout['module'], $layout['icon'], false); - $output .= theme('panels_add_image', $layout[title], $id, l(theme('image', $file), $_GET['q'] . '/' . $id, NULL, NULL, NULL, NULL, TRUE)); - } - return $output; - } - - if (!$layouts[$layout]) { - return drupal_not_found(); - } - - $panels->layout = $layout; - return drupal_get_form('panels_edit_form', $panels); -} - -function theme_panels_add_image($title, $id, $image) { - $output .= ''; - return $output; -} -// --------------------------------------------------------------------------- -// panels administrative pages - -function panels_edit_page($did = NULL) { - if (!$did || !($panels = panels_load_panels($did))) { - return drupal_not_found(); +function _panels_get_file_path($module, $file, $base_path = true) { + $output = ''; + if ($base_path) { + $output = base_path(); } - return drupal_get_form('panels_edit_form', $panels); -} - -/** - * shortcut to ease the syntax of the various form builder tricks we use. - */ -function panels_form_builder(&$form, $form_id = 'panels_edit_form') { - $form['#post'] = $_POST; - $form = form_builder($form_id, $form); + return $output . drupal_get_path('module', $module) .'/'. $file; } /** - * Edit an already loaded panels. + * Register Theme functions. */ -function panels_edit_form($panels) { - drupal_add_css(drupal_get_path('module', 'panels') . '/panels_admin.css'); - $layouts = panels_get_layouts(); - $layout = $layouts[$panels->layout]; - - $content_types = panels_get_content_types(); - - // Process all our add button stuff first so we can add stuff to the - // form semi dynamically. - - $form['add'] = array( - '#type' => 'fieldset', - '#title' => t('Add content'), - '#collapsible' => false, - '#description' => t('Select an area to add content to, then select a type of content and click the appropriate button. The content will be added.'), - ); - - // Drop the array keys into a temporary in order to protect references. - $temp = array_keys($layout['content areas']); - $default_radio = array_shift($temp); - - $form['add']['area'] = array( - '#type' => 'radios', - '#title' => t('Area'), - '#options' => $layout['content areas'], - '#prefix' => '
', - '#suffix' => '
', - '#default_value' => $default_radio, - ); - foreach ($content_types as $id => $type) { - $function = $type['admin']; - if (function_exists($function)) { - global $form_values; - $form['add'][$id] = $function('add button', $dummy); - - // $dummy needed for cause you can't have default args on a reference. - $form['add'][$id]['#parents'] = array('add', $id); - $form['add'][$id]['#tree'] = true; - panels_form_builder($form['add'][$id]); - - if ($conf = $function('add', $form_values['add'][$id])) { - $add->configuration = $conf; - $add->type = $id; - $form['add']['area']['#parents'] = array('area'); - panels_form_builder($form['add']['area']); - $add->area = $form_values['area']; - } - } - } - - $form['layout'] = array( - '#type' => 'value', - '#value' => $panels->layout - ); - - $form['did'] = array( - '#type' => 'value', - '#value' => $panels->did, - ); - - $form['info'] = array( - '#type' => 'fieldset', - '#title' => t('General information'), - '#collapsible' => false, - ); - - $file = panels_get_file_path($layout['module'], $layout['icon'], false); - $icon .= theme('image', $file); - $form['info']['layout-icon'] = array( - '#value' => '
' . $icon . '
', - ); - - $form['info']['layout-display'] = array( - '#value' => 'Layout: ' . $layout['title'], - ); - - $form['info']['title'] = array( - '#type' => 'textfield', - '#default_value' => $panels->title, - '#title' => t('Page title'), - '#description' => t('The page title for this panels layout'), - ); - - $form['info']['css_id'] = array( - '#type' => 'textfield', - '#default_value' => $panels->css_id, - '#title' => t('CSS ID'), - '#description' => t('The CSS ID to apply to this page'), - ); - - $rids = array(); - $result = db_query("SELECT r.rid, r.name FROM {role} r ORDER BY r.name"); - while ($obj = db_fetch_object($result)) { - $rids[$obj->rid] = $obj->name; - } - - $form['info']['access'] = array( - '#type' => 'checkboxes', - '#title' => t('Access'), - '#default_value' => $panels->access, - '#options' => $rids, - '#description' => t('Only the checked roles will be able to see this panel in any form; if no roles are checked, access will not be restricted.'), - ); - - $form['info']['path'] = array( - '#type' => 'textfield', - '#default_value' => $panels->path, - '#title' => t('Path'), - '#description' => t('The URL path to give this page, i.e, path/to/page'), - '#required' => TRUE, - ); +function panels_theme() { - $form['content'] = array( - '#tree' => true, + // Static array of theme functions. + $theme_registry_static = array( + 'panels_imagebutton' => array( + 'arguments' => array('element'), + ), + 'panels_add_image' => array( + 'arguments' => array('title', 'id', 'image'), + ), + 'panels_edit_form' => array( + 'arguments' => array('form'), + ), + 'panels_content_custom' => array( + 'arguments' => array('title', 'body', 'css_id', 'css_class'), + ), + 'panels_content_views' => array( + 'arguments' => array('content', 'title'), + ), ); - - // Go through our content areas and display what we have. - foreach ($layout['content areas'] as $area => $title) { - $list = array(); - $form['content'][$area] = array( - '#tree' => true, - ); - - // Construct the order, feeding it the default order for what - // we know about. When we pull it back out, it may well be - // different due to past submits. - $order = array(); - if (is_array($panels->content[$area])) { - $order = array_keys($panels->content[$area]); - } - $form['content'][$area]['order'] = array( - '#type' => 'hidden', - '#default_value' => serialize($order), - '#parents' => array('content', $area, 'order'), - ); - - // If an add button has added an item to the area, put it in and update - // the $order. - panels_form_builder($form['content'][$area]['order']); - $order = unserialize($form['content'][$area]['order']['#value']); - if ($add->area == $area) { - // say THIS 5 times real fast - if ($panels->content[$area] && $order) { - $position = max(max(array_keys($order)), max(array_keys($panels->content[$area]))) + 1; - } - else if ($order) { - $position = max(array_keys($order)) + 1; - } - else { - $position = 0; - } - - $panels->content[$area][$position] = $add; - $order[] = $position; - $form['content'][$area]['order']['#value'] = serialize($order); - } - - // Go through each item in the area and render it. - $count = count($order); - foreach ($order as $position => $id) { - // place buttons to re-order content. - $form['content'][$area][$id]['buttons'] = array( - '#parents' => array('content', $area, $id, 'buttons'), - '#tree' => TRUE - ); - panels_add_buttons($form['content'][$area][$id]['buttons'], $count, $position); - - // figure out if one of those buttons was pressed - panels_form_builder($form['content'][$area][$id]['buttons']); - $deleted = false; - foreach ($GLOBALS['form_values']['content'][$area][$id]['buttons'] as $button => $value) { - if ($value) { - $function = 'panels_move_' . $button; - $function($order, $position); - $form['content'][$area]['order']['#value'] = serialize($order); - if ($button == 'delete') - $deleted = true; - } - } - // If a content item was deleted, it still has buttons. Get rid of them. - // It had buttons because we needed to give it buttons to see if its - // buttons were clicked. - if ($deleted) { - unset($form['content'][$area][$id]['buttons']); - } - else { - // we finally get to add the conent item's content to the form. - $area_record = $panels->content[$area][$id]; - $form['content'][$area][$id]['type'] = array( - '#type' => 'hidden', - '#default_value' => $area_record->type, - '#parents' => array('content', $area, $id, 'type'), - ); - // retrieve what was already there -- so we can retain edits and - // content items that were added. - panels_form_builder($form['content'][$area][$id]['type']); - $type = $form['content'][$area][$id]['type']['#value']; - $function = $content_types[$type]['admin']; - if (function_exists($function)) { - $array = array( - '#tree' => true, - '#parents' => array('content', $area, $id, 'configuration'), - ); - $form['content'][$area][$id]['configuration'] = array_merge($array, $function('edit', $area_record->configuration, array('content', $area, $id, 'configuration'))); - panels_form_builder($form['content'][$area][$id]['configuration']); - } - } - } - } - - $form['submit'] = array( - '#type' => 'submit', - '#value' => t('Save'), - ); - - return $form; -} - -/** - * Display the form to edit a panels. - */ -function theme_panels_edit_form($form) { - $layouts = panels_get_layouts(); - $layout = $layouts[$form['layout']['#value']]; - - $content_types = panels_get_content_types(); - - $output .= drupal_render($form['info']); - foreach ($layout['content areas'] as $area => $title) { - $order = unserialize($form['content'][$area]['order']['#value']); - if (!$order) { - $area_content = t('This area has no content.'); - } - else { - $area_content = ''; - $count = count($order); - foreach ($order as $position => $id) { - if ($count > 1) { - if ($position == 0 ) { - panels_set_blank($form['content'][$area][$id]['buttons']['up']); - } - else if ($position == ($count - 1)) { - panels_set_blank($form['content'][$area][$id]['buttons']['down']); - } - } - $type = $form['content'][$area][$id]['type']['#value']; - $function = $content_types[$type]['admin']; - if (function_exists($function)) { - // figure out the actual values; using the global because we need it - // to be in the same format it'll be in 'submit'. - global $form_values; - $conf_form = $form_values['content'][$area][$id]['configuration']; - $conf = $function('save', $conf_form); - $fieldset = array( - '#title' => t('Configure'), - '#children' => drupal_render($form['content'][$area][$id]['configuration']), - '#collapsible' => true, - '#collapsed' => true - ); - $buttons = drupal_render($form['content'][$area][$id]['buttons']); - $area_content .= $buttons . ' ' . $function('list', $conf) . - theme('fieldset', $fieldset) /* . '
' */; - } - } - } - $content[$area] = theme('fieldset', array('#title' => check_plain($title), '#value' => $area_content)); - } - - $output .= panels_get_layout($layout, $content); - - $output .= drupal_render($form); - return $output; -} - -function panels_edit_form_validate($form_id, $form_values, $form) { - $content_types = panels_get_content_types(); - foreach ($form_values['content'] as $area => $content) { - foreach ($content as $id => $item) { - if (is_numeric($id)) { - $function = $content_types[$item['type']]['admin']; - if (function_exists($function)) { - $function('validate', $item['configuration'], $form['content'][$area][$id]['configuration']); - } - } - } - } -} -function panels_edit_form_submit($form_id, $form_values) { - $panels = (object) $form_values; - // be sure we get the order right. - foreach ($form_values['content'] as $area => $content) { - $array = array(); - $order = unserialize($content['order']); - if (is_array($order)) { - foreach($order as $id) { - $array[] = $content[$id]; - } - } - $panels->content[$area] = $array; + // Read the theme functions from layout templates. + $layouts = _panels_get_layouts(); + $theme_registry_dynamic = array(); + foreach ($layouts as $layout => $value) { + $theme_registry_dynamic['panels_'. $layout] = array('arguments' => array('id','content')); } - $panels->access = array_keys(array_filter($panels->access)); - panels_save_panels($panels); - drupal_set_message(t('The panels has been saved.')); - return 'admin/build/panels'; -} - -/** - * add the buttons to a content item - */ -function panels_add_buttons(&$form, $count, $position) { - $form['delete'] = panels_add_button('user-trash.png', 'delete', t('Delete this item')); - // Leaving these in but commented out as I'm not convinced we don't want them. -// if ($count > 2) { -// $form['top'] = panels_add_button('go-top.png', 'top', t('Move item to top')); -// } - if ($count > 1) { - $form['up'] = panels_add_button('go-up.png', 'up', t('Move item up')); - $form['down'] = panels_add_button('go-down.png', 'down', t('Move item down')); - } -// if ($count > 2) { -// $form['bottom'] = panels_add_button('go-bottom.png', 'bottom', t('Move item to bottom')); -// } -// if ($count > 1) { -// $form['spacer'] = panels_add_blank(); -// } - return $form; -} - -/** - * move an item in an array to the top - */ -function panels_move_top(&$array, &$position) { - $value = $array[$position]; - unset($array[$position]); - array_unshift($array, $value); - // reindex the array now - $array = array_values($array); -} - -/** - * move an item in an array to the bottom - */ -function panels_move_bottom(&$array, &$position) { - $value = $array[$position]; - unset($array[$position]); - $array[] = $value; - // reindex the array now - $array = array_values($array); -} - -/** - * move an item in an array up one position - */ -function panels_move_up(&$array, &$position) { - $value = $array[$position]; - $array[$position] = $array[$position - 1]; - $array[$position - 1] = $value; -} - -/** - * move an item in an array up one position - */ -function panels_move_down(&$array, &$position) { - $value = $array[$position]; - $array[$position] = $array[$position + 1]; - $array[$position + 1] = $value; -} -/** - * Remove an item from an array - */ -function panels_move_delete(&$array, &$position) { - unset($array[$position]); - // reindex the array now - $array = array_values($array); + return array_merge($theme_registry_static, $theme_registry_dynamic); } // --------------------------------------------------------------------------- // panels database functions -function panels_load_panels($did) { +function _panels_load_panels($did) { $panels = db_fetch_object(db_query("SELECT * FROM {panels_info} WHERE did = %d", $did)); - if (!$panels) { + if (empty($panels)) { return NULL; } $panels->content = array(); $panels->access = ($panels->access ? explode(', ', $panels->access) : array()); - + $result = db_query("SELECT * FROM {panels_area} WHERE did = %d ORDER BY area, position", $did); while ($area = db_fetch_object($result)) { $area->configuration = unserialize($area->configuration); @@ -690,34 +207,6 @@ return $panels; } -function panels_save_panels($panels) { - $panels->access = implode(', ', $panels->access); - if ($panels->did) { - db_query("UPDATE {panels_info} SET title = '%s', access = '%s', path = '%s', css_id = '%s', layout = '%s' WHERE did = %d", $panels->title, $panels->access, $panels->path, $panels->css_id, $panels->layout, $panels->did); - db_query("DELETE FROM {panels_area} WHERE did = %d", $panels->did); - } - else { - $panels->did = db_next_id("{panels_info_id}"); - // Put this in the form so modules can utilize the did of a new panel. - $GLOBALS['form_values']['did'] = $panels->did; - db_query("INSERT INTO {panels_info} (did, title, access, path, css_id, layout) VALUES (%d, '%s', '%s', '%s', '%s', '%s')", $panels->did, $panels->title, $panels->access, $panels->path, $panels->css_id, $panels->layout); - } - foreach ($panels->content as $area => $info) { - foreach ($info as $position => $block) { - if (is_numeric($position)) { // don't save some random form stuff that may've been here. - $block = (object) $block; - db_query("INSERT INTO {panels_area} (did, area, type, configuration, position) VALUES(%d, '%s', '%s', '%s', %d)", $panels->did, $area, $block->type, serialize($block->configuration), $position); - } - } - } - menu_rebuild(); -} - -function panels_delete_panels($panels) { - db_query("DELETE FROM {panels_info} WHERE did = %d", $panels->did); - db_query("DELETE FROM {panels_area} WHERE did = %d", $panels->did); - menu_rebuild(); -} // --------------------------------------------------------------------------- // panels page @@ -727,7 +216,7 @@ * * @param $set (optional) used internally to set the page status */ -function panels_is_panels_page($set_panels = NULL) { +function _panels_is_panels_page($set_panels = NULL) { static $is_panels; if ($set_panels == TRUE) { $is_panels = $set_panels; @@ -735,25 +224,27 @@ return $is_panels; } -function panels_panels_page($did) { - $panels = panels_load_panels($did); - if (!$panels) { +function _panels_panels_page($did) { + $panels = _panels_load_panels($did); + if (empty($panels)) { return drupal_not_found(); } - $layouts = panels_get_layouts(); + $layouts = _panels_get_layouts(); $layout = $layouts[$panels->layout]; $layout['css_id'] = $panels->css_id; - - if (!$layout) { - watchdog('panels', t('Unable to find requested layout %s', array('%s' => check_plain($panels->layout)))); + + if (empty($layout)) { + watchdog('panels', 'Unable to find requested layout %s', array('%s' => check_plain($panels->layout))); return drupal_not_found(); } - panels_is_panels_page(TRUE); - $content_types = panels_get_content_types(); + _panels_is_panels_page(TRUE); + $content_types = _panels_get_content_types(); + $content = array(); foreach ($panels->content as $location => $list) { + $content[$location] = ''; // E_ALL init for $content[$area->area]. foreach ($list as $area) { $function = $content_types[$area->type]['callback']; if (function_exists($function)) { @@ -761,20 +252,21 @@ } } } - $output = panels_get_layout($layout, $content); + $output = ''; + $output = _panels_get_layout($layout, $content); drupal_set_title(filter_xss_admin($panels->title)); return $output; } -function panels_get_layout($layout, $content) { - $output = theme($layout['theme'], check_plain($layout['css_id']), $content); +function _panels_get_layout($layout, $content) { + $output = theme($layout['theme'], check_plain((!empty($layout['css_id']) ? $layout['css_id'] : '')), $content); - if ($output) { - if (file_exists(path_to_theme() . '/' . $layout['css'])) { - drupal_add_css(path_to_theme() . '/' . $layout['css']); + if (!empty($output)) { + if (file_exists(path_to_theme() .'/'. $layout['css'])) { + drupal_add_css(path_to_theme() .'/'. $layout['css']); } else { - drupal_add_css(drupal_get_path('module', $layout['module']) . '/' . $layout['css']); + drupal_add_css(drupal_get_path('module', $layout['module']) .'/'. $layout['css']); } } return $output; @@ -785,29 +277,29 @@ * finished layout. */ function panels_print_layout($id, $content) { - $layouts = panels_get_layouts(); + $layouts = _panels_get_layouts(); $layout = $layouts[$id]; if (!$layout) { return; } - return panels_get_layout($layout, $content); + return _panels_get_layout($layout, $content); } // --------------------------------------------------------------------------- // panels data loading -function panels_load_includes($directory, $callback) { +function _panels_load_includes($directory, $callback) { // Load all our module 'on behalfs'. - $path = drupal_get_path('module', 'panels') . '/' . $directory; + $path = drupal_get_path('module', 'panels') .'/'. $directory; $files = drupal_system_listing('.inc$', $path, 'name', 0); - foreach($files as $file) { - require_once('./' . $file->filename); + foreach ($files as $file) { + require_once('./'. $file->filename); } $output = module_invoke_all($callback); foreach ($files as $file) { - $function = 'panels_' . $file->name . '_' . $callback; + $function = 'panels_'. $file->name .'_'. $callback; if (function_exists($function)) { $result = $function(); if (isset($result) && is_array($result)) { @@ -818,41 +310,18 @@ return $output; } -function panels_get_layouts() { - static $layout = NULL; - if (!$layout) { - $layouts = panels_load_includes('layouts', 'panels_layouts'); +function _panels_get_layouts() { + static $layouts = NULL; + if (!$layouts) { + $layouts = _panels_load_includes('layouts', 'panels_layouts'); } return $layouts; } -function panels_get_content_types() { - static $layout = NULL; - if (!$layout) { - $layouts = panels_load_includes('content_types', 'panels_content_types'); +function _panels_get_content_types() { + static $layouts = NULL; + if (!$layouts) { + $layouts = _panels_load_includes('content_types', 'panels_content_types'); } return $layouts; } - -/** - * Helper function for autocompletion of node titles. - * This is mostly stolen from clipper. - */ -function panels_node_autocomplete($string) { - if ($string != '') { // if there are node_types passed, we'll use those in a MySQL IN query. - $result = db_query_range(db_rewrite_sql('SELECT n.title, u.name FROM {node} n INNER JOIN {users} u ON u.uid = n.uid WHERE LOWER(title) LIKE LOWER("%%%s%%")'), $string, 0, 10); - $prefix = count($array) ? implode(', ', $array) .', ' : ''; - - $matches = array(); - while ($node = db_fetch_object($result)) { - $n = $node->title; - // Commas and quotes in terms are special cases, so encode 'em. - if (preg_match('/,/', $node->title) || preg_match('/"/', $node->title)) { - $n = '"'. preg_replace('/"/', '""', $node->title) .'"'; - } - $matches[$prefix . $n] = ''. check_plain($node->title) .' ('. t('by %user', array('%user' => check_plain($node->name))) .')'; - } - print drupal_to_js($matches); - exit(); - } -} Index: modules/panels/panels_admin.css =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/panels/panels_admin.css,v retrieving revision 1.1 diff -u -r1.1 panels_admin.css --- modules/panels/panels_admin.css 22 Jul 2006 04:36:09 -0000 1.1 +++ modules/panels/panels_admin.css 8 Jan 2008 23:20:00 -0000 @@ -1,14 +1,14 @@ -.layout-link { - float: left; - padding: 1em; - width: 125px; -} - -.layout-link img { - margin-left: auto; - margin-right: auto; -} - -.layout-icon { - float: right; +.layout-link { + float: left; + padding: 1em; + width: 125px; +} + +.layout-link img { + margin-left: auto; + margin-right: auto; +} + +.layout-icon { + float: right; } \ No newline at end of file Index: modules/panels/INSTALL.txt =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/panels/INSTALL.txt,v retrieving revision 1.2 diff -u -r1.2 INSTALL.txt --- modules/panels/INSTALL.txt 22 Jul 2006 06:06:46 -0000 1.2 +++ modules/panels/INSTALL.txt 8 Jan 2008 23:20:00 -0000 @@ -1,13 +1,13 @@ -Simply activate the module. The tables you need will be installed. - -Then, go to administer >> panels - -Select 'add'. - -Choose a layout; a simple one is best if you're just exploring. - -Choose a URL for your new panel page. 'panel/test' is good if you're just exploring. - -Add some content to each of the areas. - -Click save, then click on the URL in the list to see what your new page looks like. +Simply activate the module. The tables you need will be installed. + +Then, go to administer >> panels + +Select 'add'. + +Choose a layout; a simple one is best if you're just exploring. + +Choose a URL for your new panel page. 'panel/test' is good if you're just exploring. + +Add some content to each of the areas. + +Click save, then click on the URL in the list to see what your new page looks like. Index: modules/panels/TODO.txt =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/panels/TODO.txt,v retrieving revision 1.2 diff -u -r1.2 TODO.txt --- modules/panels/TODO.txt 26 Jul 2006 16:53:40 -0000 1.2 +++ modules/panels/TODO.txt 8 Jan 2008 23:20:00 -0000 @@ -1,12 +1,12 @@ -TODO: - -This is a brief list of the things that may still need to be done. No guarantee -of them ever getting done. - -content type: phptemplate - -access control to pages -access control to content types - -dashboard node extension - +TODO: + +This is a brief list of the things that may still need to be done. No guarantee +of them ever getting done. + +content type: phptemplate + +access control to pages +access control to content types + +dashboard node extension + Index: modules/panels/po/de.po =================================================================== RCS file: modules/panels/po/de.po diff -N modules/panels/po/de.po --- modules/panels/po/de.po 2 Jun 2007 10:38:50 -0000 1.1.2.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,424 +0,0 @@ -# $Id: de.po,v 1.1.2.1 2007/06/02 10:38:50 hass Exp $ -# -# LANGUAGE translation of Drupal (general) -# Copyright YEAR NAME -# Generated from files: -# panels.module,v 1.10.2.9 2007/03/15 23:13:41 merlinofchaos -# fourcol_25_25_25_25.inc,v 1.0 2006/09/02 11:47:00 alexander.hass -# threecol_33_33_33.inc,v 1.0 2006/09/02 11:47:00 alexander.hass -# twocol_25_75.inc,v 1.0 2006/09/02 11:47:00 alexander.hass -# twocol_33_66.inc,v 1.0 2006/09/02 11:47:00 alexander.hass -# twocol_38_62.inc,v 1.0 2006/09/02 11:47:00 alexander.hass -# twocol_50_50.inc,v 1.0 2006/09/02 11:47:00 alexander.hass -# twocol_62_38.inc,v 1.0 2006/09/02 11:47:00 alexander.hass -# twocol_66_33.inc,v 1.0 2006/09/02 11:47:00 alexander.hass -# twocol_75_25.inc,v 1.0 2006/09/02 11:47:00 alexander.hass -# threecol_25_50_25_stacked.inc,v 1.5 2006/08/22 23:54:20 merlinofchaos -# threecol_33_34_33.inc,v 1.5 2006/08/22 23:54:20 merlinofchaos -# threecol_33_34_33_stacked.inc,v 1.5 2006/08/22 23:54:20 merlinofchaos -# twocol.inc,v 1.6 2006/08/22 23:54:20 merlinofchaos -# twocol_stacked.inc,v 1.5 2006/08/22 23:54:20 merlinofchaos -# -msgid "" -msgstr "" -"Project-Id-Version: panels 5.x\n" -"POT-Creation-Date: 2007-03-24 21:42+0100\n" -"PO-Revision-Date: 2007-06-02 12:37+0100\n" -"Last-Translator: Alexander Hass\n" -"Language-Team: Alexander Hass\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Poedit-Language: German\n" -"X-Poedit-Country: GERMANY\n" -"X-Poedit-SourceCharset: utf-8\n" - -#: panels.module:382 -#: content_types/custom.inc:90 -msgid "CSS ID" -msgstr "CSS ID" - -#: content_types/block.inc:75 -#: content_types/views.inc:123 -msgid "Block" -msgstr "Block" - -#: layouts/threecol_25_50_25.inc:12 -#: layouts/threecol_25_50_25_stacked.inc:14 -#: layouts/threecol_33_34_33.inc:13 -#: layouts/threecol_33_34_33_stacked.inc:14 -#: layouts/twocol.inc:13 -#: layouts/twocol_stacked.inc:14 -msgid "Left side" -msgstr "Linke Spalte" - -#: layouts/threecol_25_50_25.inc:12 -#: layouts/threecol_25_50_25_stacked.inc:14 -#: layouts/threecol_33_34_33.inc:13 -#: layouts/threecol_33_34_33_stacked.inc:14 -msgid "Middle column" -msgstr "Mittlere Spalte" - -#: layouts/threecol_25_50_25.inc:12 -#: layouts/threecol_25_50_25_stacked.inc:14 -#: layouts/threecol_33_34_33.inc:13 -#: layouts/threecol_33_34_33_stacked.inc:14 -#: layouts/twocol.inc:13 -#: layouts/twocol_stacked.inc:14 -msgid "Right side" -msgstr "Rechte Spalte" - -#: layouts/threecol_25_50_25_stacked.inc:14 -#: layouts/threecol_33_34_33_stacked.inc:14 -#: layouts/twocol_stacked.inc:14 -msgid "Top" -msgstr "Oben" - -#: layouts/threecol_25_50_25_stacked.inc:14 -#: layouts/threecol_33_34_33_stacked.inc:14 -#: layouts/twocol_stacked.inc:14 -msgid "Bottom" -msgstr "Unten" - -#: content_types/block.inc:79 -#: ;86 -msgid "Add block" -msgstr "Block hinzufügen" - -#: content_types/block.inc:107 -msgid "Override title" -msgstr "Titel überschreiben" - -#: content_types/block.inc:108 -msgid "If checked, the block title will be overridden with the override title text." -msgstr "Sobald aktiviert, wird der Blocktitel mit dem Texttitel überschrieben." - -#: content_types/block.inc:113 -msgid "Override title text" -msgstr "Titeltext überschreiben" - -#: content_types/custom.inc:50 -msgid "Enter an optional title for custom content you define" -msgstr "Einen optionalen Titel für benutzerdefinierten Inhalt eingeben" - -#: content_types/custom.inc:57 -#: ;64 -msgid "Add custom" -msgstr "Benutzerdefiniert hinzufügen" - -#: content_types/custom.inc:73 -#: ;74 -msgid "Title" -msgstr "Titel" - -#: content_types/custom.inc:78 -msgid "Body" -msgstr "Textkörper" - -#: content_types/custom.inc:91 -msgid "CSS ID of this custom content." -msgstr "CSS ID dieses benutzerdefinierten Inhaltes." - -#: content_types/custom.inc:98 -msgid "CSS class" -msgstr "CSS Klasse" - -#: content_types/custom.inc:99 -msgid "CSS class of this custom content." -msgstr "CSS Klasse dieses benutzerdefinierten Inhaltes." - -#: content_types/node.inc:42 -msgid "Enter the title or NID of a post" -msgstr "Den Titel oder die NID des Beitrages eingeben" - -#: content_types/node.inc:50 -#: ;57 -msgid "Add post" -msgstr "Beitrag hinzufügen" - -#: content_types/node.inc:68 -msgid "Unable to find \"%s\"" -msgstr "„%s“ wurde nicht gefunden" - -#: content_types/node.inc:82 -msgid "Teaser" -msgstr "Anrisstext" - -#: content_types/node.inc:85 -msgid "Check here to show only the node teaser" -msgstr "Aktivieren, um nur den Anrisstext des Beitrages anzuzeigen." - -#: content_types/node.inc:90 -msgid "Display links" -msgstr "Verweise anzeigen" - -#: content_types/node.inc:91 -msgid "Check here to display the links with the post." -msgstr "Aktivieren, um die Verweise mit dem Beitrag anzuzeigen." - -#: content_types/node.inc:96 -msgid "Suppress node title" -msgstr "Beitragstitel unterdrücken" - -#: content_types/node.inc:97 -msgid "Check here to suppress the node title." -msgstr "Aktivieren, um den Beitragstitel zu unterdrücken." - -#: layouts/threecol_25_50_25.inc:8 -msgid "Three column 25/50/25" -msgstr "Drei Spalten 25/50/25" - -#: layouts/threecol_25_50_25_stacked.inc:10 -msgid "Three column 25/50/25 stacked" -msgstr "Drei Spalten 25/50/25 gestapelt" - -#: layouts/threecol_33_34_33.inc:9 -msgid "Three column 33/34/33" -msgstr "Drei Spalten 33/34/33" - -#: layouts/threecol_33_34_33_stacked.inc:10 -msgid "Three column 33/34/33 stacked" -msgstr "Drei Spalten 33/34/33 gestapelt" - -#: layouts/twocol.inc:9 -msgid "Two column" -msgstr "Zwei Spalten" - -#: layouts/twocol_stacked.inc:10 -msgid "Two column stacked" -msgstr "Zwei Spalten gestapelt" - -#: panels.module:11 -msgid "

You may peruse a list of your current panels layouts and edit them, or click add to create a new page.

" -msgstr "

Die Liste der aktuellen Panel Layouts kann überprüft, bearbeitet oder eine neue Seite erstellt werden.

" - -#: panels.module:13 -msgid "

Choose a layout for your new page from the list below.

" -msgstr "

Ein Layout für die neue Seite von der unten aufgeführten Liste auswählen.

" - -#: panels.module:60 -#: panels.info:0 -msgid "Panels" -msgstr "Panels" - -#: panels.module:63 -msgid "Create pages on your site that are 2 or 3 columns" -msgstr "Seiten mit 2 oder 3 Spalten in der Webseite erstellen" - -#: panels.module:67 -msgid "List" -msgstr "Alle anzeigen" - -#: panels.module:75 -#: ;82 -msgid "Add" -msgstr "Hinzufügen" - -#: panels.module:89 -msgid "Edit panels" -msgstr "Panels bearbeiten" - -#: panels.module:96 -msgid "Delete panels" -msgstr "Panels löschen" - -#: panels.module:105 -msgid "Autocomplete node" -msgstr "Beitrag automatisch vervollständigen" - -#: panels.module:199 -msgid "Edit" -msgstr "Bearbeiten" - -#: panels.module:200 -#: ;228 -msgid "Delete" -msgstr "Löschen" - -#: panels.module:205 -msgid "Panel title" -msgstr "Paneltitel" - -#: panels.module:206 -msgid "URL" -msgstr "URL" - -#: panels.module:207 -msgid "Operations" -msgstr "Operationen" - -#: panels.module:225 -msgid "Are you sure you want to delete %title?" -msgstr "Soll %title wirklich gelöscht werden?" - -#: panels.module:227 -msgid "This action cannot be undone." -msgstr "Diese Aktion kann nicht rückgängig gemacht werden." - -#: panels.module:228 -msgid "Cancel" -msgstr "Abbrechen" - -#: panels.module:308 -msgid "Add content" -msgstr "Inhalt hinzufügen" - -#: panels.module:310 -msgid "Select an area to add content to, then select a type of content and click the appropriate button. The content will be added." -msgstr "Zuerst einen Bereich auswählen zu dem Inhalt hinzugefügt werden soll, dann einen Inhalt auswählen und den entsprechenden Knopf drücken. Der Inhalt wird hinzugefügt." - -#: panels.module:319 -msgid "Area" -msgstr "Bereich" - -#: panels.module:358 -msgid "General information" -msgstr "Allgemeine Information" - -#: panels.module:375 -msgid "Page title" -msgstr "Seitentitel" - -#: panels.module:376 -msgid "The page title for this panels layout" -msgstr "Der Seitentitel für dieses Panels Layout" - -#: panels.module:383 -msgid "The CSS ID to apply to this page" -msgstr "Die CSS ID, welche auf diese Seite angewendet werden soll" - -#: panels.module:394 -msgid "Access" -msgstr "Zugriff" - -#: panels.module:397 -msgid "Only the checked roles will be able to see this panel in any form; if no roles are checked, access will not be restricted." -msgstr "Nur die aktivierten Rollen können dieses Panel in jeglicher Art sehen; Wenn keine Rollen aktiviert sind, wird der Zugriff nicht beschränkt." - -#: panels.module:403 -msgid "Path" -msgstr "Pfad" - -#: panels.module:404 -msgid "The URL path to give this page, i.e, path/to/page" -msgstr "Der URL Pfad den diese Seite erhalten soll, z.b.: pfad/zu/seite" - -#: panels.module:508 -msgid "Save" -msgstr "Speichern" - -#: panels.module:527 -msgid "This area has no content." -msgstr "Dieser Bereich hat keinen Inhalt." - -#: panels.module:550 -msgid "Configure" -msgstr "Konfigurieren" - -#: panels.module:599 -msgid "The panels has been saved." -msgstr "Das Panel wurde gespeichert." - -#: panels.module:607 -msgid "Delete this item" -msgstr "Diesen Beitrag löschen" - -#: panels.module:613 -msgid "Move item up" -msgstr "Beitrag nach oben verschieben" - -#: panels.module:614 -msgid "Move item down" -msgstr "Beitrag nach unten verschieben" - -#: panels.module:749 -msgid "Unable to find requested layout %s" -msgstr "Das Layout %s konnte nicht gefunden werden" - -#: panels.module:853 -msgid "by %user" -msgstr "von %user" - -#: panels.module:749 -#: ;0 panels.info:0 -msgid "panels" -msgstr "panels" - -#: panels.module:21 -msgid "create panels" -msgstr "Panels erstellen" - -#: panels.module:21 -msgid "access all panels" -msgstr "Zugriff auf alle Panels" - -#: panels.info:0 -msgid "Create pages that are divided into areas of the page." -msgstr "Erstelle Seiten, welche in Bereiche der Seite unterteilt sind." - -#: content_types/views.inc:86 -msgid "Choose a view from the views module" -msgstr "Eine Ansicht vom Ansichtenmodul wählen" - -#: content_types/views.inc:90 -#: ;97 -msgid "Add view" -msgstr "Ansicht hinzufügen" - -#: content_types/views.inc:121 -msgid "View type" -msgstr "Ansichtstyp" - -#: content_types/views.inc:122 -msgid "Select which type of the view to display." -msgstr "Den Typ einer Ansicht auswählen, der angezeigt werden soll." - -#: content_types/views.inc:123 -msgid "Page" -msgstr "Seite" - -#: content_types/views.inc:123 -msgid "Embedded" -msgstr "Eingebettet" - -#: content_types/views.inc:128 -msgid "Pager ID" -msgstr "Pager ID" - -#: content_types/views.inc:130 -msgid "Select the numeric pager ID to use, or 0 to not have use paging. Select \"1\" if you aren't sure what this means" -msgstr "Die zu verwendende Seitenreiter ID auswählen, oder 0 um keine Seitenreiter zu verwenden. Bei Unsicherheiten \"1\" wählen." - -#: content_types/views.inc:136 -msgid "Posts to Display" -msgstr "Anzuzeigende Beiträge" - -#: content_types/views.inc:138 -msgid "Select the number of posts to display, or 0 to display all results." -msgstr "Die Anzahl der anzuzeigenden Beiträge auswählen, oder 0 um alle Ergebnisse anzuzeigen." - -#: content_types/views.inc:144 -msgid "View arguments" -msgstr "Argumente anzeigen" - -#: content_types/views.inc:146 -msgid "Arguments to send to the view as if they were part of the URL in the form of arg1/arg2/arg3. You can use %0, %1, %2, etc, to use arguments from the actual URL. For example, if your panel URL is foo/bar, and someone hits foo/bar/5 use %2 to get the 5." -msgstr "Argumente an die Ansicht übergeben, als wenn diese Teil der URL sind, in Form von arg1/arg2/arg3. Um Argumente von der aktuellen URL zu verwenden, kann %0, %1, %2, usw. verwendet werden. Sollte die Panel URL foo/bar lauten und jemand greift auf foo/bar/5 zu, kann %2 verwendet werden, um die 5 zu erhalten." - -#: content_types/views.inc:152 -msgid "Override URL" -msgstr "URL überschreiben" - -#: content_types/views.inc:154 -msgid "If this is set, override the View URL; this can sometimes be useful to set to the panel URL" -msgstr "Sobald aktiviert, wird die Ansichten URL überschrieben; Manchmal kann es sinnvoll sein, die Panel URL einzusetzten." - -#: content_types/views.inc:160 -msgid "Display view title" -msgstr "Ansichtentitel anzeigen" - -#: content_types/views.inc:161 -msgid "If checked, the title of the view will be displayed." -msgstr "Sobald aktiviert, wird der Titel der Ansicht angezeigt." - Index: modules/panels/po/panels.pot =================================================================== RCS file: modules/panels/po/panels.pot diff -N modules/panels/po/panels.pot --- modules/panels/po/panels.pot 2 Jun 2007 10:38:29 -0000 1.1.2.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,406 +0,0 @@ -# $Id: panels.pot,v 1.1.2.1 2007/06/02 10:38:29 hass Exp $ -# -# LANGUAGE translation of Drupal (general) -# Copyright YEAR NAME -# Generated from files: -# panels.module,v 1.10.2.9 2007/03/15 23:13:41 merlinofchaos -# threecol_25_50_25_stacked.inc,v 1.5 2006/08/22 23:54:20 merlinofchaos -# threecol_33_34_33.inc,v 1.5 2006/08/22 23:54:20 merlinofchaos -# threecol_33_34_33_stacked.inc,v 1.5 2006/08/22 23:54:20 merlinofchaos -# twocol.inc,v 1.6 2006/08/22 23:54:20 merlinofchaos -# twocol_stacked.inc,v 1.5 2006/08/22 23:54:20 merlinofchaos -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PROJECT VERSION\n" -"POT-Creation-Date: 2007-05-31 20:59+0100\n" -"PO-Revision-Date: YYYY-mm-DD HH:MM+ZZZZ\n" -"Last-Translator: NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" - -#: panels.module:382 content_types/custom.inc:90 -msgid "CSS ID" -msgstr "" - -#: content_types/block.inc:75 content_types/views.inc:123 -msgid "Block" -msgstr "" - -#: layouts/threecol_25_50_25.inc:12 layouts/threecol_25_50_25_stacked.inc:14 -#: layouts/threecol_33_34_33.inc:13 layouts/threecol_33_34_33_stacked.inc:14 -#: layouts/twocol.inc:13 layouts/twocol_stacked.inc:14 -msgid "Left side" -msgstr "" - -#: layouts/threecol_25_50_25.inc:12 layouts/threecol_25_50_25_stacked.inc:14 -#: layouts/threecol_33_34_33.inc:13 layouts/threecol_33_34_33_stacked.inc:14 -msgid "Middle column" -msgstr "" - -#: layouts/threecol_25_50_25.inc:12 layouts/threecol_25_50_25_stacked.inc:14 -#: layouts/threecol_33_34_33.inc:13 layouts/threecol_33_34_33_stacked.inc:14 -#: layouts/twocol.inc:13 layouts/twocol_stacked.inc:14 -msgid "Right side" -msgstr "" - -#: layouts/threecol_25_50_25_stacked.inc:14 -#: layouts/threecol_33_34_33_stacked.inc:14 layouts/twocol_stacked.inc:14 -msgid "Top" -msgstr "" - -#: layouts/threecol_25_50_25_stacked.inc:14 -#: layouts/threecol_33_34_33_stacked.inc:14 layouts/twocol_stacked.inc:14 -msgid "Bottom" -msgstr "" - -#: content_types/block.inc:79;86 -msgid "Add block" -msgstr "" - -#: content_types/block.inc:107 -msgid "Override title" -msgstr "" - -#: content_types/block.inc:108 -msgid "" -"If checked, the block title will be overridden with the override title text." -msgstr "" - -#: content_types/block.inc:113 -msgid "Override title text" -msgstr "" - -#: content_types/custom.inc:50 -msgid "Enter an optional title for custom content you define" -msgstr "" - -#: content_types/custom.inc:57;64 -msgid "Add custom" -msgstr "" - -#: content_types/custom.inc:73;74 -msgid "Title" -msgstr "" - -#: content_types/custom.inc:78 -msgid "Body" -msgstr "" - -#: content_types/custom.inc:91 -msgid "CSS ID of this custom content." -msgstr "" - -#: content_types/custom.inc:98 -msgid "CSS class" -msgstr "" - -#: content_types/custom.inc:99 -msgid "CSS class of this custom content." -msgstr "" - -#: content_types/node.inc:42 -msgid "Enter the title or NID of a post" -msgstr "" - -#: content_types/node.inc:50;57 -msgid "Add post" -msgstr "" - -#: content_types/node.inc:68 -msgid "Unable to find \"%s\"" -msgstr "" - -#: content_types/node.inc:82 -msgid "Teaser" -msgstr "" - -#: content_types/node.inc:85 -msgid "Check here to show only the node teaser" -msgstr "" - -#: content_types/node.inc:90 -msgid "Display links" -msgstr "" - -#: content_types/node.inc:91 -msgid "Check here to display the links with the post." -msgstr "" - -#: content_types/node.inc:96 -msgid "Suppress node title" -msgstr "" - -#: content_types/node.inc:97 -msgid "Check here to suppress the node title." -msgstr "" - -#: layouts/threecol_25_50_25.inc:8 -msgid "Three column 25/50/25" -msgstr "" - -#: layouts/threecol_25_50_25_stacked.inc:10 -msgid "Three column 25/50/25 stacked" -msgstr "" - -#: layouts/threecol_33_34_33.inc:9 -msgid "Three column 33/34/33" -msgstr "" - -#: layouts/threecol_33_34_33_stacked.inc:10 -msgid "Three column 33/34/33 stacked" -msgstr "" - -#: layouts/twocol.inc:9 -msgid "Two column" -msgstr "" - -#: layouts/twocol_stacked.inc:10 -msgid "Two column stacked" -msgstr "" - -#: panels.module:11 -msgid "" -"

You may peruse a list of your current panels layouts and edit them, or " -"click add to create a new page.

" -msgstr "" - -#: panels.module:13 -msgid "

Choose a layout for your new page from the list below.

" -msgstr "" - -#: panels.module:60 panels.info:0 -msgid "Panels" -msgstr "" - -#: panels.module:63 -msgid "Create pages on your site that are 2 or 3 columns" -msgstr "" - -#: panels.module:67 -msgid "List" -msgstr "" - -#: panels.module:75;82 -msgid "Add" -msgstr "" - -#: panels.module:89 -msgid "Edit panels" -msgstr "" - -#: panels.module:96 -msgid "Delete panels" -msgstr "" - -#: panels.module:105 -msgid "Autocomplete node" -msgstr "" - -#: panels.module:199 -msgid "Edit" -msgstr "" - -#: panels.module:200;228 -msgid "Delete" -msgstr "" - -#: panels.module:205 -msgid "Panel title" -msgstr "" - -#: panels.module:206 -msgid "URL" -msgstr "" - -#: panels.module:207 -msgid "Operations" -msgstr "" - -#: panels.module:225 -msgid "Are you sure you want to delete %title?" -msgstr "" - -#: panels.module:227 -msgid "This action cannot be undone." -msgstr "" - -#: panels.module:228 -msgid "Cancel" -msgstr "" - -#: panels.module:308 -msgid "Add content" -msgstr "" - -#: panels.module:310 -msgid "" -"Select an area to add content to, then select a type of content and click " -"the appropriate button. The content will be added." -msgstr "" - -#: panels.module:319 -msgid "Area" -msgstr "" - -#: panels.module:358 -msgid "General information" -msgstr "" - -#: panels.module:375 -msgid "Page title" -msgstr "" - -#: panels.module:376 -msgid "The page title for this panels layout" -msgstr "" - -#: panels.module:383 -msgid "The CSS ID to apply to this page" -msgstr "" - -#: panels.module:394 -msgid "Access" -msgstr "" - -#: panels.module:397 -msgid "" -"Only the checked roles will be able to see this panel in any form; if no " -"roles are checked, access will not be restricted." -msgstr "" - -#: panels.module:403 -msgid "Path" -msgstr "" - -#: panels.module:404 -msgid "The URL path to give this page, i.e, path/to/page" -msgstr "" - -#: panels.module:508 -msgid "Save" -msgstr "" - -#: panels.module:527 -msgid "This area has no content." -msgstr "" - -#: panels.module:550 -msgid "Configure" -msgstr "" - -#: panels.module:599 -msgid "The panels has been saved." -msgstr "" - -#: panels.module:607 -msgid "Delete this item" -msgstr "" - -#: panels.module:613 -msgid "Move item up" -msgstr "" - -#: panels.module:614 -msgid "Move item down" -msgstr "" - -#: panels.module:749 -msgid "Unable to find requested layout %s" -msgstr "" - -#: panels.module:853 -msgid "by %user" -msgstr "" - -#: panels.module:749;0 panels.info:0 -msgid "panels" -msgstr "" - -#: panels.module:21 -msgid "create panels" -msgstr "" - -#: panels.module:21 -msgid "access all panels" -msgstr "" - -#: panels.info:0 -msgid "Create pages that are divided into areas of the page." -msgstr "" - -#: content_types/views.inc:86 -msgid "Choose a view from the views module" -msgstr "" - -#: content_types/views.inc:90;97 -msgid "Add view" -msgstr "" - -#: content_types/views.inc:121 -msgid "View type" -msgstr "" - -#: content_types/views.inc:122 -msgid "Select which type of the view to display." -msgstr "" - -#: content_types/views.inc:123 -msgid "Page" -msgstr "" - -#: content_types/views.inc:123 -msgid "Embedded" -msgstr "" - -#: content_types/views.inc:128 -msgid "Pager ID" -msgstr "" - -#: content_types/views.inc:130 -msgid "" -"Select the numeric pager ID to use, or 0 to not have use paging. Select \"1" -"\" if you aren't sure what this means" -msgstr "" - -#: content_types/views.inc:136 -msgid "Posts to Display" -msgstr "" - -#: content_types/views.inc:138 -msgid "Select the number of posts to display, or 0 to display all results." -msgstr "" - -#: content_types/views.inc:144 -msgid "View arguments" -msgstr "" - -#: content_types/views.inc:146 -msgid "" -"Arguments to send to the view as if they were part of the URL in the form of " -"arg1/arg2/arg3. You can use %0, %1, %2, etc, to use arguments from the " -"actual URL. For example, if your panel URL is foo/bar, and someone hits foo/" -"bar/5 use %2 to get the 5." -msgstr "" - -#: content_types/views.inc:152 -msgid "Override URL" -msgstr "" - -#: content_types/views.inc:154 -msgid "" -"If this is set, override the View URL; this can sometimes be useful to set " -"to the panel URL" -msgstr "" - -#: content_types/views.inc:160 -msgid "Display view title" -msgstr "" - -#: content_types/views.inc:161 -msgid "If checked, the title of the view will be displayed." -msgstr "" Index: modules/panels/po/da.po =================================================================== RCS file: modules/panels/po/da.po diff -N modules/panels/po/da.po --- modules/panels/po/da.po 12 Sep 2007 13:37:16 -0000 1.1.2.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,396 +0,0 @@ -# Danish translation of Drupal (panels.module) -# Copyright 2007 Morten Wulff -msgid "" -msgstr "" -"Project-Id-Version: Danish translation of Drupal (panels.module) $Id: da.po,v 1.1.2.1 2007/09/12 13:37:16 wulff Exp $\n" -"POT-Creation-Date: 2007-09-12 13:59+0200\n" -"PO-Revision-Date: 2007-09-12 15:36+0100\n" -"Last-Translator: Morten Wulff \n" -"Language-Team: Danish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Poedit-Language: Danish\n" -"X-Poedit-Country: DENMARK\n" - -#: panels.module:11 -msgid "

You may peruse a list of your current panels layouts and edit them, or click add to create a new page.

" -msgstr "

Du kan gennemse en liste af eksiterende paneler eller klikke for at tilføje en ny side.

" - -#: panels.module:13 -msgid "

Choose a layout for your new page from the list below.

" -msgstr "

Vælg et layout fra listen herunder.

" - -#: panels.module:60 -#: panels.info:0 -msgid "Panels" -msgstr "Paneler" - -#: panels.module:63 -msgid "Create pages on your site that are 2 or 3 columns" -msgstr "Opret sider der har 2 eller 3 spalter" - -#: panels.module:67 -msgid "List" -msgstr "Vis" - -#: panels.module:75;82 -msgid "Add" -msgstr "Tilføj" - -#: panels.module:89 -msgid "Edit panels" -msgstr "Rediger paneler" - -#: panels.module:96 -msgid "Delete panels" -msgstr "Slet paneler" - -#: panels.module:105 -msgid "Autocomplete node" -msgstr "Autofuldfør indholdselement" - -#: panels.module:199 -msgid "Edit" -msgstr "Rediger" - -#: panels.module:200;228 -msgid "Delete" -msgstr "Slet" - -#: panels.module:205 -msgid "Panel title" -msgstr "Paneltitel" - -#: panels.module:206 -msgid "URL" -msgstr "URL" - -#: panels.module:207 -msgid "Operations" -msgstr "Handlinger" - -#: panels.module:225 -msgid "Are you sure you want to delete %title?" -msgstr "Ønsker du at slette %title?" - -#: panels.module:227 -msgid "This action cannot be undone." -msgstr "Denne handling kan ikke fortrydes." - -#: panels.module:228 -msgid "Cancel" -msgstr "Annuller" - -#: panels.module:308 -msgid "Add content" -msgstr "Tilføj indhold" - -#: panels.module:310 -msgid "Select an area to add content to, then select a type of content and click the appropriate button. The content will be added." -msgstr "Vælg hvilket område du vil føje indhold til, vælg hvilken type du vil tilføje og klik på den relevante knap." - -#: panels.module:319 -msgid "Area" -msgstr "Område" - -#: panels.module:358 -msgid "General information" -msgstr "Generel information" - -#: panels.module:375 -msgid "Page title" -msgstr "Sidetitel" - -#: panels.module:376 -msgid "The page title for this panels layout" -msgstr "Panelets sidetitel" - -#: panels.module:382 -#: content_types/custom.inc:90 -msgid "CSS ID" -msgstr "CSS ID" - -#: panels.module:383 -msgid "The CSS ID to apply to this page" -msgstr "Sidens CSS ID" - -#: panels.module:394 -msgid "Access" -msgstr "Adgang" - -#: panels.module:397 -msgid "Only the checked roles will be able to see this panel in any form; if no roles are checked, access will not be restricted." -msgstr "Kun de valgte rolle kan se panelet. Hvis ingen roller er valgt har alle adgang." - -#: panels.module:403 -msgid "Path" -msgstr "Sti" - -#: panels.module:404 -msgid "The URL path to give this page, i.e, path/to/page" -msgstr "Sidens URL (f.eks. sti/til/side)" - -#: panels.module:508 -msgid "Save" -msgstr "Gem" - -#: panels.module:527 -msgid "This area has no content." -msgstr "Området har intet indhold." - -#: panels.module:550 -msgid "Configure" -msgstr "Konfigurer" - -#: panels.module:599 -msgid "The panels has been saved." -msgstr "Paneler gemt." - -#: panels.module:607 -msgid "Delete this item" -msgstr "Slet element" - -#: panels.module:613 -msgid "Move item up" -msgstr "Flyt element op" - -#: panels.module:614 -msgid "Move item down" -msgstr "Flyt element ned" - -#: panels.module:749 -msgid "Unable to find requested layout %s" -msgstr "Kan ikke finde layoutet %s" - -#: panels.module:853 -msgid "by %user" -msgstr "af %user" - -#: panels.module:749;0 -msgid "panels" -msgstr "paneler" - -#: panels.module:21 -msgid "create panels" -msgstr "opret paneler" - -#: panels.module:21 -msgid "access all panels" -msgstr "tilgå alle paneler" - -#: panels.info:0 -msgid "Create pages that are divided into areas of the page." -msgstr "Opret sider der er inddelt i underområdet." - -#: content_types/block.inc:75 -#: content_types/views.inc:123 -msgid "Block" -msgstr "Blok" - -#: content_types/block.inc:79;86 -msgid "Add block" -msgstr "Tilføj blok" - -#: content_types/block.inc:107 -msgid "Override title" -msgstr "Tilsidesæt titel" - -#: content_types/block.inc:108 -msgid "If checked, the block title will be overridden with the override title text." -msgstr "Erstat bloktitlen med teksten i \"tilsidesæt titel\"." - -#: content_types/block.inc:113 -msgid "Override title text" -msgstr "Tilsidesæt titeltekst" - -#: content_types/custom.inc:50 -msgid "Enter an optional title for custom content you define" -msgstr "Indtast en titel for tilpasset indhold" - -#: content_types/custom.inc:57;64 -msgid "Add custom" -msgstr "Tilføj tilpasset" - -#: content_types/custom.inc:73;74 -msgid "Title" -msgstr "Titel" - -#: content_types/custom.inc:78 -msgid "Body" -msgstr "Indhold" - -#: content_types/custom.inc:91 -msgid "CSS ID of this custom content." -msgstr "CSS ID for tilpasset indhold." - -#: content_types/custom.inc:98 -msgid "CSS class" -msgstr "CSS klasse" - -#: content_types/custom.inc:99 -msgid "CSS class of this custom content." -msgstr "CSS klasse for tilpasset indhold." - -#: content_types/node.inc:42 -msgid "Enter the title or NID of a post" -msgstr "Indtast node ID for indlæg" - -#: content_types/node.inc:50;57 -msgid "Add post" -msgstr "Tilføj indlæg" - -#: content_types/node.inc:68 -msgid "Unable to find \"%s\"" -msgstr "Kan ikke finde \"%s\"" - -#: content_types/node.inc:82 -msgid "Teaser" -msgstr "Smagsprøve" - -#: content_types/node.inc:85 -msgid "Check here to show only the node teaser" -msgstr "Vis kun smagsprøver" - -#: content_types/node.inc:90 -msgid "Display links" -msgstr "Vis links" - -#: content_types/node.inc:91 -msgid "Check here to display the links with the post." -msgstr "Vis links" - -#: content_types/node.inc:96 -msgid "Suppress node title" -msgstr "Skjul titel" - -#: content_types/node.inc:97 -msgid "Check here to suppress the node title." -msgstr "Skjul titel" - -#: content_types/views.inc:86 -msgid "Choose a view from the views module" -msgstr "Vælg en visning" - -#: content_types/views.inc:90;97 -msgid "Add view" -msgstr "Tilføj visning" - -#: content_types/views.inc:121 -msgid "View type" -msgstr "Visningstype" - -#: content_types/views.inc:122 -msgid "Select which type of the view to display." -msgstr "Vælg hvilken udgave af visning der skal vises." - -#: content_types/views.inc:123 -msgid "Page" -msgstr "Side" - -#: content_types/views.inc:123 -msgid "Embedded" -msgstr "Indlejret" - -#: content_types/views.inc:128 -msgid "Pager ID" -msgstr "Sideskifter-ID" - -#: content_types/views.inc:130 -msgid "Select the numeric pager ID to use, or 0 to not have use paging. Select \"1\" if you aren't sure what this means" -msgstr "Vælg et numerisk sideskifter-ID, eller angiv 0 for ikke at bruge sideskift. Vælg \"1\" hvis du er i tvivl om hvad dette betyder." - -#: content_types/views.inc:136 -msgid "Posts to Display" -msgstr "Antal indlæg" - -#: content_types/views.inc:138 -msgid "Select the number of posts to display, or 0 to display all results." -msgstr "Vælg hvor mange indlæg der skal vises, eller 0 for at vise alle indlæg." - -#: content_types/views.inc:144 -msgid "View arguments" -msgstr "Argumenter til visning" - -#: content_types/views.inc:146 -msgid "Arguments to send to the view as if they were part of the URL in the form of arg1/arg2/arg3. You can use %0, %1, %2, etc, to use arguments from the actual URL. For example, if your panel URL is foo/bar, and someone hits foo/bar/5 use %2 to get the 5." -msgstr "Argumenter der skal sendes til visningen som om de er en del af URLen på formen arg1/arg2/arg3. Du kan bruge %0, %1, %2, osv. for at bruge argumenter fra den aktuelle URL." - -#: content_types/views.inc:152 -msgid "Override URL" -msgstr "Tilsidesæt URL" - -#: content_types/views.inc:154 -msgid "If this is set, override the View URL; this can sometimes be useful to set to the panel URL" -msgstr "Tilsidesæt visnings-URL; det kan nogle gange være nyttigt at bruge panel-URLen i stedet." - -#: content_types/views.inc:160 -msgid "Display view title" -msgstr "Vis titel på visning" - -#: content_types/views.inc:161 -msgid "If checked, the title of the view will be displayed." -msgstr "Vis visningens titel." - -#: layouts/threecol_25_50_25.inc:8 -msgid "Three column 25/50/25" -msgstr "Tre spalter 25/50/25" - -#: layouts/threecol_25_50_25.inc:12 -#: layouts/threecol_25_50_25_stacked.inc:14 -#: layouts/threecol_33_34_33.inc:13 -#: layouts/threecol_33_34_33_stacked.inc:14 -#: layouts/twocol.inc:13 -#: layouts/twocol_stacked.inc:14 -msgid "Left side" -msgstr "Venstre side" - -#: layouts/threecol_25_50_25.inc:12 -#: layouts/threecol_25_50_25_stacked.inc:14 -#: layouts/threecol_33_34_33.inc:13 -#: layouts/threecol_33_34_33_stacked.inc:14 -msgid "Middle column" -msgstr "Midterste spalte" - -#: layouts/threecol_25_50_25.inc:12 -#: layouts/threecol_25_50_25_stacked.inc:14 -#: layouts/threecol_33_34_33.inc:13 -#: layouts/threecol_33_34_33_stacked.inc:14 -#: layouts/twocol.inc:13 -#: layouts/twocol_stacked.inc:14 -msgid "Right side" -msgstr "Højre side" - -#: layouts/threecol_25_50_25_stacked.inc:10 -msgid "Three column 25/50/25 stacked" -msgstr "Tre spalter 25/50/25 stablet" - -#: layouts/threecol_25_50_25_stacked.inc:14 -#: layouts/threecol_33_34_33_stacked.inc:14 -#: layouts/twocol_stacked.inc:14 -msgid "Top" -msgstr "Top" - -#: layouts/threecol_25_50_25_stacked.inc:14 -#: layouts/threecol_33_34_33_stacked.inc:14 -#: layouts/twocol_stacked.inc:14 -msgid "Bottom" -msgstr "Bund" - -#: layouts/threecol_33_34_33.inc:9 -msgid "Three column 33/34/33" -msgstr "Tre spalter 33/34/33" - -#: layouts/threecol_33_34_33_stacked.inc:10 -msgid "Three column 33/34/33 stacked" -msgstr "Tre spalter 33/34/33 stablet" - -#: layouts/twocol.inc:9 -msgid "Two column" -msgstr "To spalter" - -#: layouts/twocol_stacked.inc:10 -msgid "Two column stacked" -msgstr "To spalter stablet" - Index: modules/panels/LICENSE.txt =================================================================== RCS file: modules/panels/LICENSE.txt diff -N modules/panels/LICENSE.txt --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ modules/panels/LICENSE.txt 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,274 @@ +GNU GENERAL PUBLIC LICENSE + + Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, +Cambridge, MA 02139, USA. Everyone is permitted to copy and distribute +verbatim copies of this license document, but changing it is not allowed. + + Preamble + +The licenses for most software are designed to take away your freedom to +share and change it. By contrast, the GNU General Public License is +intended to guarantee your freedom to share and change free software--to +make sure the software is free for all its users. This General Public License +applies to most of the Free Software Foundation's software and to any other +program whose authors commit to using it. (Some other Free Software +Foundation software is covered by the GNU Library General Public License +instead.) You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you have the +freedom to distribute copies of free software (and charge for this service if +you wish), that you receive source code or can get it if you want it, that you +can change the software or use pieces of it in new free programs; and that +you know you can do these things. + +To protect your rights, we need to make restrictions that forbid anyone to +deny you these rights or to ask you to surrender the rights. These restrictions +translate to certain responsibilities for you if you distribute copies of the +software, or if you modify it. + +For example, if you distribute copies of such a program, whether gratis or for +a fee, you must give the recipients all the rights that you have. You must make +sure that they, too, receive or can get the source code. And you must show +them these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the software, and (2) +offer you this license which gives you legal permission to copy, distribute +and/or modify the software. + +Also, for each author's protection and ours, we want to make certain that +everyone understands that there is no warranty for this free software. If the +software is modified by someone else and passed on, we want its recipients +to know that what they have is not the original, so that any problems +introduced by others will not reflect on the original authors' reputations. + +Finally, any free program is threatened constantly by software patents. We +wish to avoid the danger that redistributors of a free program will individually +obtain patent licenses, in effect making the program proprietary. To prevent +this, we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + +The precise terms and conditions for copying, distribution and modification +follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND + MODIFICATION + +0. This License applies to any program or other work which contains a notice +placed by the copyright holder saying it may be distributed under the terms +of this General Public License. The "Program", below, refers to any such +program or work, and a "work based on the Program" means either the +Program or any derivative work under copyright law: that is to say, a work +containing the Program or a portion of it, either verbatim or with +modifications and/or translated into another language. (Hereinafter, translation +is included without limitation in the term "modification".) Each licensee is +addressed as "you". + +Activities other than copying, distribution and modification are not covered +by this License; they are outside its scope. The act of running the Program is +not restricted, and the output from the Program is covered only if its contents +constitute a work based on the Program (independent of having been made +by running the Program). Whether that is true depends on what the Program +does. + +1. You may copy and distribute verbatim copies of the Program's source +code as you receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice and +disclaimer of warranty; keep intact all the notices that refer to this License +and to the absence of any warranty; and give any other recipients of the +Program a copy of this License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and you +may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion of it, +thus forming a work based on the Program, and copy and distribute such +modifications or work under the terms of Section 1 above, provided that you +also meet all of these conditions: + +a) You must cause the modified files to carry prominent notices stating that +you changed the files and the date of any change. + +b) You must cause any work that you distribute or publish, that in whole or in +part contains or is derived from the Program or any part thereof, to be +licensed as a whole at no charge to all third parties under the terms of this +License. + +c) If the modified program normally reads commands interactively when run, +you must cause it, when started running for such interactive use in the most +ordinary way, to print or display an announcement including an appropriate +copyright notice and a notice that there is no warranty (or else, saying that +you provide a warranty) and that users may redistribute the program under +these conditions, and telling the user how to view a copy of this License. +(Exception: if the Program itself is interactive but does not normally print such +an announcement, your work based on the Program is not required to print +an announcement.) + +These requirements apply to the modified work as a whole. If identifiable +sections of that work are not derived from the Program, and can be +reasonably considered independent and separate works in themselves, then +this License, and its terms, do not apply to those sections when you distribute +them as separate works. But when you distribute the same sections as part +of a whole which is a work based on the Program, the distribution of the +whole must be on the terms of this License, whose permissions for other +licensees extend to the entire whole, and thus to each and every part +regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest your rights to +work written entirely by you; rather, the intent is to exercise the right to +control the distribution of derivative or collective works based on the +Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of a +storage or distribution medium does not bring the other work under the scope +of this License. + +3. You may copy and distribute the Program (or a work based on it, under +Section 2) in object code or executable form under the terms of Sections 1 +and 2 above provided that you also do one of the following: + +a) Accompany it with the complete corresponding machine-readable source +code, which must be distributed under the terms of Sections 1 and 2 above +on a medium customarily used for software interchange; or, + +b) Accompany it with a written offer, valid for at least three years, to give +any third party, for a charge no more than your cost of physically performing +source distribution, a complete machine-readable copy of the corresponding +source code, to be distributed under the terms of Sections 1 and 2 above on +a medium customarily used for software interchange; or, + +c) Accompany it with the information you received as to the offer to distribute +corresponding source code. (This alternative is allowed only for +noncommercial distribution and only if you received the program in object +code or executable form with such an offer, in accord with Subsection b +above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source code +means all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation and +installation of the executable. However, as a special exception, the source +code distributed need not include anything that is normally distributed (in +either source or binary form) with the major components (compiler, kernel, +and so on) of the operating system on which the executable runs, unless that +component itself accompanies the executable. + +If distribution of executable or object code is made by offering access to +copy from a designated place, then offering equivalent access to copy the +source code from the same place counts as distribution of the source code, +even though third parties are not compelled to copy the source along with the +object code. + +4. You may not copy, modify, sublicense, or distribute the Program except as +expressly provided under this License. Any attempt otherwise to copy, +modify, sublicense or distribute the Program is void, and will automatically +terminate your rights under this License. However, parties who have received +copies, or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + +5. You are not required to accept this License, since you have not signed it. +However, nothing else grants you permission to modify or distribute the +Program or its derivative works. These actions are prohibited by law if you +do not accept this License. Therefore, by modifying or distributing the +Program (or any work based on the Program), you indicate your acceptance +of this License to do so, and all its terms and conditions for copying, +distributing or modifying the Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the original +licensor to copy, distribute or modify the Program subject to these terms and +conditions. You may not impose any further restrictions on the recipients' +exercise of the rights granted herein. You are not responsible for enforcing +compliance by third parties to this License. + +7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), conditions +are imposed on you (whether by court order, agreement or otherwise) that +contradict the conditions of this License, they do not excuse you from the +conditions of this License. If you cannot distribute so as to satisfy +simultaneously your obligations under this License and any other pertinent +obligations, then as a consequence you may not distribute the Program at all. +For example, if a patent license would not permit royalty-free redistribution +of the Program by all those who receive copies directly or indirectly through +you, then the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply and +the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents or +other property right claims or to contest validity of any such claims; this +section has the sole purpose of protecting the integrity of the free software +distribution system, which is implemented by public license practices. Many +people have made generous contributions to the wide range of software +distributed through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing to +distribute software through any other system and a licensee cannot impose +that choice. + +This section is intended to make thoroughly clear what is believed to be a +consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in certain +countries either by patents or by copyrighted interfaces, the original copyright +holder who places the Program under this License may add an explicit +geographical distribution limitation excluding those countries, so that +distribution is permitted only in or among countries not thus excluded. In such +case, this License incorporates the limitation as if written in the body of this +License. + +9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will be +similar in spirit to the present version, but may differ in detail to address new +problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies +a version number of this License which applies to it and "any later version", +you have the option of following the terms and conditions either of that +version or of any later version published by the Free Software Foundation. If +the Program does not specify a version number of this License, you may +choose any version ever published by the Free Software Foundation. + +10. If you wish to incorporate parts of the Program into other free programs +whose distribution conditions are different, write to the author to ask for +permission. For software which is copyrighted by the Free Software +Foundation, write to the Free Software Foundation; we sometimes make +exceptions for this. Our decision will be guided by the two goals of +preserving the free status of all derivatives of our free software and of +promoting the sharing and reuse of software generally. + + NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT +PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE +STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT +WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND +PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL +NECESSARY SERVICING, REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR +AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR +ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE +LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, +SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OR INABILITY TO USE THE +PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA +OR DATA BEING RENDERED INACCURATE OR LOSSES +SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE +PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN +IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF +THE POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS Index: modules/panels/translations/da.po =================================================================== RCS file: modules/panels/translations/da.po diff -N modules/panels/translations/da.po --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ modules/panels/translations/da.po 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,396 @@ +# Danish translation of Drupal (panels.module) +# Copyright 2007 Morten Wulff +msgid "" +msgstr "" +"Project-Id-Version: Danish translation of Drupal (panels.module) $Id: da.po,v 1.1.2.1 2007/09/12 13:37:16 wulff Exp $\n" +"POT-Creation-Date: 2007-09-12 13:59+0200\n" +"PO-Revision-Date: 2007-09-12 15:36+0100\n" +"Last-Translator: Morten Wulff \n" +"Language-Team: Danish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-Language: Danish\n" +"X-Poedit-Country: DENMARK\n" + +#: panels.module:11 +msgid "

You may peruse a list of your current panels layouts and edit them, or click add to create a new page.

" +msgstr "

Du kan gennemse en liste af eksiterende paneler eller klikke for at tilføje en ny side.

" + +#: panels.module:13 +msgid "

Choose a layout for your new page from the list below.

" +msgstr "

Vælg et layout fra listen herunder.

" + +#: panels.module:60 +#: panels.info:0 +msgid "Panels" +msgstr "Paneler" + +#: panels.module:63 +msgid "Create pages on your site that are 2 or 3 columns" +msgstr "Opret sider der har 2 eller 3 spalter" + +#: panels.module:67 +msgid "List" +msgstr "Vis" + +#: panels.module:75;82 +msgid "Add" +msgstr "Tilføj" + +#: panels.module:89 +msgid "Edit panels" +msgstr "Rediger paneler" + +#: panels.module:96 +msgid "Delete panels" +msgstr "Slet paneler" + +#: panels.module:105 +msgid "Autocomplete node" +msgstr "Autofuldfør indholdselement" + +#: panels.module:199 +msgid "Edit" +msgstr "Rediger" + +#: panels.module:200;228 +msgid "Delete" +msgstr "Slet" + +#: panels.module:205 +msgid "Panel title" +msgstr "Paneltitel" + +#: panels.module:206 +msgid "URL" +msgstr "URL" + +#: panels.module:207 +msgid "Operations" +msgstr "Handlinger" + +#: panels.module:225 +msgid "Are you sure you want to delete %title?" +msgstr "Ønsker du at slette %title?" + +#: panels.module:227 +msgid "This action cannot be undone." +msgstr "Denne handling kan ikke fortrydes." + +#: panels.module:228 +msgid "Cancel" +msgstr "Annuller" + +#: panels.module:308 +msgid "Add content" +msgstr "Tilføj indhold" + +#: panels.module:310 +msgid "Select an area to add content to, then select a type of content and click the appropriate button. The content will be added." +msgstr "Vælg hvilket område du vil føje indhold til, vælg hvilken type du vil tilføje og klik på den relevante knap." + +#: panels.module:319 +msgid "Area" +msgstr "Område" + +#: panels.module:358 +msgid "General information" +msgstr "Generel information" + +#: panels.module:375 +msgid "Page title" +msgstr "Sidetitel" + +#: panels.module:376 +msgid "The page title for this panels layout" +msgstr "Panelets sidetitel" + +#: panels.module:382 +#: content_types/custom.inc:90 +msgid "CSS ID" +msgstr "CSS ID" + +#: panels.module:383 +msgid "The CSS ID to apply to this page" +msgstr "Sidens CSS ID" + +#: panels.module:394 +msgid "Access" +msgstr "Adgang" + +#: panels.module:397 +msgid "Only the checked roles will be able to see this panel in any form; if no roles are checked, access will not be restricted." +msgstr "Kun de valgte rolle kan se panelet. Hvis ingen roller er valgt har alle adgang." + +#: panels.module:403 +msgid "Path" +msgstr "Sti" + +#: panels.module:404 +msgid "The URL path to give this page, i.e, path/to/page" +msgstr "Sidens URL (f.eks. sti/til/side)" + +#: panels.module:508 +msgid "Save" +msgstr "Gem" + +#: panels.module:527 +msgid "This area has no content." +msgstr "Området har intet indhold." + +#: panels.module:550 +msgid "Configure" +msgstr "Konfigurer" + +#: panels.module:599 +msgid "The panels has been saved." +msgstr "Paneler gemt." + +#: panels.module:607 +msgid "Delete this item" +msgstr "Slet element" + +#: panels.module:613 +msgid "Move item up" +msgstr "Flyt element op" + +#: panels.module:614 +msgid "Move item down" +msgstr "Flyt element ned" + +#: panels.module:749 +msgid "Unable to find requested layout %s" +msgstr "Kan ikke finde layoutet %s" + +#: panels.module:853 +msgid "by %user" +msgstr "af %user" + +#: panels.module:749;0 +msgid "panels" +msgstr "paneler" + +#: panels.module:21 +msgid "create panels" +msgstr "opret paneler" + +#: panels.module:21 +msgid "access all panels" +msgstr "tilgå alle paneler" + +#: panels.info:0 +msgid "Create pages that are divided into areas of the page." +msgstr "Opret sider der er inddelt i underområdet." + +#: content_types/block.inc:75 +#: content_types/views.inc:123 +msgid "Block" +msgstr "Blok" + +#: content_types/block.inc:79;86 +msgid "Add block" +msgstr "Tilføj blok" + +#: content_types/block.inc:107 +msgid "Override title" +msgstr "Tilsidesæt titel" + +#: content_types/block.inc:108 +msgid "If checked, the block title will be overridden with the override title text." +msgstr "Erstat bloktitlen med teksten i \"tilsidesæt titel\"." + +#: content_types/block.inc:113 +msgid "Override title text" +msgstr "Tilsidesæt titeltekst" + +#: content_types/custom.inc:50 +msgid "Enter an optional title for custom content you define" +msgstr "Indtast en titel for tilpasset indhold" + +#: content_types/custom.inc:57;64 +msgid "Add custom" +msgstr "Tilføj tilpasset" + +#: content_types/custom.inc:73;74 +msgid "Title" +msgstr "Titel" + +#: content_types/custom.inc:78 +msgid "Body" +msgstr "Indhold" + +#: content_types/custom.inc:91 +msgid "CSS ID of this custom content." +msgstr "CSS ID for tilpasset indhold." + +#: content_types/custom.inc:98 +msgid "CSS class" +msgstr "CSS klasse" + +#: content_types/custom.inc:99 +msgid "CSS class of this custom content." +msgstr "CSS klasse for tilpasset indhold." + +#: content_types/node.inc:42 +msgid "Enter the title or NID of a post" +msgstr "Indtast node ID for indlæg" + +#: content_types/node.inc:50;57 +msgid "Add post" +msgstr "Tilføj indlæg" + +#: content_types/node.inc:68 +msgid "Unable to find \"%s\"" +msgstr "Kan ikke finde \"%s\"" + +#: content_types/node.inc:82 +msgid "Teaser" +msgstr "Smagsprøve" + +#: content_types/node.inc:85 +msgid "Check here to show only the node teaser" +msgstr "Vis kun smagsprøver" + +#: content_types/node.inc:90 +msgid "Display links" +msgstr "Vis links" + +#: content_types/node.inc:91 +msgid "Check here to display the links with the post." +msgstr "Vis links" + +#: content_types/node.inc:96 +msgid "Suppress node title" +msgstr "Skjul titel" + +#: content_types/node.inc:97 +msgid "Check here to suppress the node title." +msgstr "Skjul titel" + +#: content_types/views.inc:86 +msgid "Choose a view from the views module" +msgstr "Vælg en visning" + +#: content_types/views.inc:90;97 +msgid "Add view" +msgstr "Tilføj visning" + +#: content_types/views.inc:121 +msgid "View type" +msgstr "Visningstype" + +#: content_types/views.inc:122 +msgid "Select which type of the view to display." +msgstr "Vælg hvilken udgave af visning der skal vises." + +#: content_types/views.inc:123 +msgid "Page" +msgstr "Side" + +#: content_types/views.inc:123 +msgid "Embedded" +msgstr "Indlejret" + +#: content_types/views.inc:128 +msgid "Pager ID" +msgstr "Sideskifter-ID" + +#: content_types/views.inc:130 +msgid "Select the numeric pager ID to use, or 0 to not have use paging. Select \"1\" if you aren't sure what this means" +msgstr "Vælg et numerisk sideskifter-ID, eller angiv 0 for ikke at bruge sideskift. Vælg \"1\" hvis du er i tvivl om hvad dette betyder." + +#: content_types/views.inc:136 +msgid "Posts to Display" +msgstr "Antal indlæg" + +#: content_types/views.inc:138 +msgid "Select the number of posts to display, or 0 to display all results." +msgstr "Vælg hvor mange indlæg der skal vises, eller 0 for at vise alle indlæg." + +#: content_types/views.inc:144 +msgid "View arguments" +msgstr "Argumenter til visning" + +#: content_types/views.inc:146 +msgid "Arguments to send to the view as if they were part of the URL in the form of arg1/arg2/arg3. You can use %0, %1, %2, etc, to use arguments from the actual URL. For example, if your panel URL is foo/bar, and someone hits foo/bar/5 use %2 to get the 5." +msgstr "Argumenter der skal sendes til visningen som om de er en del af URLen på formen arg1/arg2/arg3. Du kan bruge %0, %1, %2, osv. for at bruge argumenter fra den aktuelle URL." + +#: content_types/views.inc:152 +msgid "Override URL" +msgstr "Tilsidesæt URL" + +#: content_types/views.inc:154 +msgid "If this is set, override the View URL; this can sometimes be useful to set to the panel URL" +msgstr "Tilsidesæt visnings-URL; det kan nogle gange være nyttigt at bruge panel-URLen i stedet." + +#: content_types/views.inc:160 +msgid "Display view title" +msgstr "Vis titel på visning" + +#: content_types/views.inc:161 +msgid "If checked, the title of the view will be displayed." +msgstr "Vis visningens titel." + +#: layouts/threecol_25_50_25.inc:8 +msgid "Three column 25/50/25" +msgstr "Tre spalter 25/50/25" + +#: layouts/threecol_25_50_25.inc:12 +#: layouts/threecol_25_50_25_stacked.inc:14 +#: layouts/threecol_33_34_33.inc:13 +#: layouts/threecol_33_34_33_stacked.inc:14 +#: layouts/twocol.inc:13 +#: layouts/twocol_stacked.inc:14 +msgid "Left side" +msgstr "Venstre side" + +#: layouts/threecol_25_50_25.inc:12 +#: layouts/threecol_25_50_25_stacked.inc:14 +#: layouts/threecol_33_34_33.inc:13 +#: layouts/threecol_33_34_33_stacked.inc:14 +msgid "Middle column" +msgstr "Midterste spalte" + +#: layouts/threecol_25_50_25.inc:12 +#: layouts/threecol_25_50_25_stacked.inc:14 +#: layouts/threecol_33_34_33.inc:13 +#: layouts/threecol_33_34_33_stacked.inc:14 +#: layouts/twocol.inc:13 +#: layouts/twocol_stacked.inc:14 +msgid "Right side" +msgstr "Højre side" + +#: layouts/threecol_25_50_25_stacked.inc:10 +msgid "Three column 25/50/25 stacked" +msgstr "Tre spalter 25/50/25 stablet" + +#: layouts/threecol_25_50_25_stacked.inc:14 +#: layouts/threecol_33_34_33_stacked.inc:14 +#: layouts/twocol_stacked.inc:14 +msgid "Top" +msgstr "Top" + +#: layouts/threecol_25_50_25_stacked.inc:14 +#: layouts/threecol_33_34_33_stacked.inc:14 +#: layouts/twocol_stacked.inc:14 +msgid "Bottom" +msgstr "Bund" + +#: layouts/threecol_33_34_33.inc:9 +msgid "Three column 33/34/33" +msgstr "Tre spalter 33/34/33" + +#: layouts/threecol_33_34_33_stacked.inc:10 +msgid "Three column 33/34/33 stacked" +msgstr "Tre spalter 33/34/33 stablet" + +#: layouts/twocol.inc:9 +msgid "Two column" +msgstr "To spalter" + +#: layouts/twocol_stacked.inc:10 +msgid "Two column stacked" +msgstr "To spalter stablet" + Index: modules/panels/translations/de.po =================================================================== RCS file: modules/panels/translations/de.po diff -N modules/panels/translations/de.po --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ modules/panels/translations/de.po 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,424 @@ +# $Id: de.po,v 1.1.2.1 2007/06/02 10:38:50 hass Exp $ +# +# LANGUAGE translation of Drupal (general) +# Copyright YEAR NAME +# Generated from files: +# panels.module,v 1.10.2.9 2007/03/15 23:13:41 merlinofchaos +# fourcol_25_25_25_25.inc,v 1.0 2006/09/02 11:47:00 alexander.hass +# threecol_33_33_33.inc,v 1.0 2006/09/02 11:47:00 alexander.hass +# twocol_25_75.inc,v 1.0 2006/09/02 11:47:00 alexander.hass +# twocol_33_66.inc,v 1.0 2006/09/02 11:47:00 alexander.hass +# twocol_38_62.inc,v 1.0 2006/09/02 11:47:00 alexander.hass +# twocol_50_50.inc,v 1.0 2006/09/02 11:47:00 alexander.hass +# twocol_62_38.inc,v 1.0 2006/09/02 11:47:00 alexander.hass +# twocol_66_33.inc,v 1.0 2006/09/02 11:47:00 alexander.hass +# twocol_75_25.inc,v 1.0 2006/09/02 11:47:00 alexander.hass +# threecol_25_50_25_stacked.inc,v 1.5 2006/08/22 23:54:20 merlinofchaos +# threecol_33_34_33.inc,v 1.5 2006/08/22 23:54:20 merlinofchaos +# threecol_33_34_33_stacked.inc,v 1.5 2006/08/22 23:54:20 merlinofchaos +# twocol.inc,v 1.6 2006/08/22 23:54:20 merlinofchaos +# twocol_stacked.inc,v 1.5 2006/08/22 23:54:20 merlinofchaos +# +msgid "" +msgstr "" +"Project-Id-Version: panels 5.x\n" +"POT-Creation-Date: 2007-03-24 21:42+0100\n" +"PO-Revision-Date: 2007-06-02 12:37+0100\n" +"Last-Translator: Alexander Hass\n" +"Language-Team: Alexander Hass\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-Language: German\n" +"X-Poedit-Country: GERMANY\n" +"X-Poedit-SourceCharset: utf-8\n" + +#: panels.module:382 +#: content_types/custom.inc:90 +msgid "CSS ID" +msgstr "CSS ID" + +#: content_types/block.inc:75 +#: content_types/views.inc:123 +msgid "Block" +msgstr "Block" + +#: layouts/threecol_25_50_25.inc:12 +#: layouts/threecol_25_50_25_stacked.inc:14 +#: layouts/threecol_33_34_33.inc:13 +#: layouts/threecol_33_34_33_stacked.inc:14 +#: layouts/twocol.inc:13 +#: layouts/twocol_stacked.inc:14 +msgid "Left side" +msgstr "Linke Spalte" + +#: layouts/threecol_25_50_25.inc:12 +#: layouts/threecol_25_50_25_stacked.inc:14 +#: layouts/threecol_33_34_33.inc:13 +#: layouts/threecol_33_34_33_stacked.inc:14 +msgid "Middle column" +msgstr "Mittlere Spalte" + +#: layouts/threecol_25_50_25.inc:12 +#: layouts/threecol_25_50_25_stacked.inc:14 +#: layouts/threecol_33_34_33.inc:13 +#: layouts/threecol_33_34_33_stacked.inc:14 +#: layouts/twocol.inc:13 +#: layouts/twocol_stacked.inc:14 +msgid "Right side" +msgstr "Rechte Spalte" + +#: layouts/threecol_25_50_25_stacked.inc:14 +#: layouts/threecol_33_34_33_stacked.inc:14 +#: layouts/twocol_stacked.inc:14 +msgid "Top" +msgstr "Oben" + +#: layouts/threecol_25_50_25_stacked.inc:14 +#: layouts/threecol_33_34_33_stacked.inc:14 +#: layouts/twocol_stacked.inc:14 +msgid "Bottom" +msgstr "Unten" + +#: content_types/block.inc:79 +#: ;86 +msgid "Add block" +msgstr "Block hinzufügen" + +#: content_types/block.inc:107 +msgid "Override title" +msgstr "Titel überschreiben" + +#: content_types/block.inc:108 +msgid "If checked, the block title will be overridden with the override title text." +msgstr "Sobald aktiviert, wird der Blocktitel mit dem Texttitel überschrieben." + +#: content_types/block.inc:113 +msgid "Override title text" +msgstr "Titeltext überschreiben" + +#: content_types/custom.inc:50 +msgid "Enter an optional title for custom content you define" +msgstr "Einen optionalen Titel für benutzerdefinierten Inhalt eingeben" + +#: content_types/custom.inc:57 +#: ;64 +msgid "Add custom" +msgstr "Benutzerdefiniert hinzufügen" + +#: content_types/custom.inc:73 +#: ;74 +msgid "Title" +msgstr "Titel" + +#: content_types/custom.inc:78 +msgid "Body" +msgstr "Textkörper" + +#: content_types/custom.inc:91 +msgid "CSS ID of this custom content." +msgstr "CSS ID dieses benutzerdefinierten Inhaltes." + +#: content_types/custom.inc:98 +msgid "CSS class" +msgstr "CSS Klasse" + +#: content_types/custom.inc:99 +msgid "CSS class of this custom content." +msgstr "CSS Klasse dieses benutzerdefinierten Inhaltes." + +#: content_types/node.inc:42 +msgid "Enter the title or NID of a post" +msgstr "Den Titel oder die NID des Beitrages eingeben" + +#: content_types/node.inc:50 +#: ;57 +msgid "Add post" +msgstr "Beitrag hinzufügen" + +#: content_types/node.inc:68 +msgid "Unable to find \"%s\"" +msgstr "„%s“ wurde nicht gefunden" + +#: content_types/node.inc:82 +msgid "Teaser" +msgstr "Anrisstext" + +#: content_types/node.inc:85 +msgid "Check here to show only the node teaser" +msgstr "Aktivieren, um nur den Anrisstext des Beitrages anzuzeigen." + +#: content_types/node.inc:90 +msgid "Display links" +msgstr "Verweise anzeigen" + +#: content_types/node.inc:91 +msgid "Check here to display the links with the post." +msgstr "Aktivieren, um die Verweise mit dem Beitrag anzuzeigen." + +#: content_types/node.inc:96 +msgid "Suppress node title" +msgstr "Beitragstitel unterdrücken" + +#: content_types/node.inc:97 +msgid "Check here to suppress the node title." +msgstr "Aktivieren, um den Beitragstitel zu unterdrücken." + +#: layouts/threecol_25_50_25.inc:8 +msgid "Three column 25/50/25" +msgstr "Drei Spalten 25/50/25" + +#: layouts/threecol_25_50_25_stacked.inc:10 +msgid "Three column 25/50/25 stacked" +msgstr "Drei Spalten 25/50/25 gestapelt" + +#: layouts/threecol_33_34_33.inc:9 +msgid "Three column 33/34/33" +msgstr "Drei Spalten 33/34/33" + +#: layouts/threecol_33_34_33_stacked.inc:10 +msgid "Three column 33/34/33 stacked" +msgstr "Drei Spalten 33/34/33 gestapelt" + +#: layouts/twocol.inc:9 +msgid "Two column" +msgstr "Zwei Spalten" + +#: layouts/twocol_stacked.inc:10 +msgid "Two column stacked" +msgstr "Zwei Spalten gestapelt" + +#: panels.module:11 +msgid "

You may peruse a list of your current panels layouts and edit them, or click add to create a new page.

" +msgstr "

Die Liste der aktuellen Panel Layouts kann überprüft, bearbeitet oder eine neue Seite erstellt werden.

" + +#: panels.module:13 +msgid "

Choose a layout for your new page from the list below.

" +msgstr "

Ein Layout für die neue Seite von der unten aufgeführten Liste auswählen.

" + +#: panels.module:60 +#: panels.info:0 +msgid "Panels" +msgstr "Panels" + +#: panels.module:63 +msgid "Create pages on your site that are 2 or 3 columns" +msgstr "Seiten mit 2 oder 3 Spalten in der Webseite erstellen" + +#: panels.module:67 +msgid "List" +msgstr "Alle anzeigen" + +#: panels.module:75 +#: ;82 +msgid "Add" +msgstr "Hinzufügen" + +#: panels.module:89 +msgid "Edit panels" +msgstr "Panels bearbeiten" + +#: panels.module:96 +msgid "Delete panels" +msgstr "Panels löschen" + +#: panels.module:105 +msgid "Autocomplete node" +msgstr "Beitrag automatisch vervollständigen" + +#: panels.module:199 +msgid "Edit" +msgstr "Bearbeiten" + +#: panels.module:200 +#: ;228 +msgid "Delete" +msgstr "Löschen" + +#: panels.module:205 +msgid "Panel title" +msgstr "Paneltitel" + +#: panels.module:206 +msgid "URL" +msgstr "URL" + +#: panels.module:207 +msgid "Operations" +msgstr "Operationen" + +#: panels.module:225 +msgid "Are you sure you want to delete %title?" +msgstr "Soll %title wirklich gelöscht werden?" + +#: panels.module:227 +msgid "This action cannot be undone." +msgstr "Diese Aktion kann nicht rückgängig gemacht werden." + +#: panels.module:228 +msgid "Cancel" +msgstr "Abbrechen" + +#: panels.module:308 +msgid "Add content" +msgstr "Inhalt hinzufügen" + +#: panels.module:310 +msgid "Select an area to add content to, then select a type of content and click the appropriate button. The content will be added." +msgstr "Zuerst einen Bereich auswählen zu dem Inhalt hinzugefügt werden soll, dann einen Inhalt auswählen und den entsprechenden Knopf drücken. Der Inhalt wird hinzugefügt." + +#: panels.module:319 +msgid "Area" +msgstr "Bereich" + +#: panels.module:358 +msgid "General information" +msgstr "Allgemeine Information" + +#: panels.module:375 +msgid "Page title" +msgstr "Seitentitel" + +#: panels.module:376 +msgid "The page title for this panels layout" +msgstr "Der Seitentitel für dieses Panels Layout" + +#: panels.module:383 +msgid "The CSS ID to apply to this page" +msgstr "Die CSS ID, welche auf diese Seite angewendet werden soll" + +#: panels.module:394 +msgid "Access" +msgstr "Zugriff" + +#: panels.module:397 +msgid "Only the checked roles will be able to see this panel in any form; if no roles are checked, access will not be restricted." +msgstr "Nur die aktivierten Rollen können dieses Panel in jeglicher Art sehen; Wenn keine Rollen aktiviert sind, wird der Zugriff nicht beschränkt." + +#: panels.module:403 +msgid "Path" +msgstr "Pfad" + +#: panels.module:404 +msgid "The URL path to give this page, i.e, path/to/page" +msgstr "Der URL Pfad den diese Seite erhalten soll, z.b.: pfad/zu/seite" + +#: panels.module:508 +msgid "Save" +msgstr "Speichern" + +#: panels.module:527 +msgid "This area has no content." +msgstr "Dieser Bereich hat keinen Inhalt." + +#: panels.module:550 +msgid "Configure" +msgstr "Konfigurieren" + +#: panels.module:599 +msgid "The panels has been saved." +msgstr "Das Panel wurde gespeichert." + +#: panels.module:607 +msgid "Delete this item" +msgstr "Diesen Beitrag löschen" + +#: panels.module:613 +msgid "Move item up" +msgstr "Beitrag nach oben verschieben" + +#: panels.module:614 +msgid "Move item down" +msgstr "Beitrag nach unten verschieben" + +#: panels.module:749 +msgid "Unable to find requested layout %s" +msgstr "Das Layout %s konnte nicht gefunden werden" + +#: panels.module:853 +msgid "by %user" +msgstr "von %user" + +#: panels.module:749 +#: ;0 panels.info:0 +msgid "panels" +msgstr "panels" + +#: panels.module:21 +msgid "create panels" +msgstr "Panels erstellen" + +#: panels.module:21 +msgid "access all panels" +msgstr "Zugriff auf alle Panels" + +#: panels.info:0 +msgid "Create pages that are divided into areas of the page." +msgstr "Erstelle Seiten, welche in Bereiche der Seite unterteilt sind." + +#: content_types/views.inc:86 +msgid "Choose a view from the views module" +msgstr "Eine Ansicht vom Ansichtenmodul wählen" + +#: content_types/views.inc:90 +#: ;97 +msgid "Add view" +msgstr "Ansicht hinzufügen" + +#: content_types/views.inc:121 +msgid "View type" +msgstr "Ansichtstyp" + +#: content_types/views.inc:122 +msgid "Select which type of the view to display." +msgstr "Den Typ einer Ansicht auswählen, der angezeigt werden soll." + +#: content_types/views.inc:123 +msgid "Page" +msgstr "Seite" + +#: content_types/views.inc:123 +msgid "Embedded" +msgstr "Eingebettet" + +#: content_types/views.inc:128 +msgid "Pager ID" +msgstr "Pager ID" + +#: content_types/views.inc:130 +msgid "Select the numeric pager ID to use, or 0 to not have use paging. Select \"1\" if you aren't sure what this means" +msgstr "Die zu verwendende Seitenreiter ID auswählen, oder 0 um keine Seitenreiter zu verwenden. Bei Unsicherheiten \"1\" wählen." + +#: content_types/views.inc:136 +msgid "Posts to Display" +msgstr "Anzuzeigende Beiträge" + +#: content_types/views.inc:138 +msgid "Select the number of posts to display, or 0 to display all results." +msgstr "Die Anzahl der anzuzeigenden Beiträge auswählen, oder 0 um alle Ergebnisse anzuzeigen." + +#: content_types/views.inc:144 +msgid "View arguments" +msgstr "Argumente anzeigen" + +#: content_types/views.inc:146 +msgid "Arguments to send to the view as if they were part of the URL in the form of arg1/arg2/arg3. You can use %0, %1, %2, etc, to use arguments from the actual URL. For example, if your panel URL is foo/bar, and someone hits foo/bar/5 use %2 to get the 5." +msgstr "Argumente an die Ansicht übergeben, als wenn diese Teil der URL sind, in Form von arg1/arg2/arg3. Um Argumente von der aktuellen URL zu verwenden, kann %0, %1, %2, usw. verwendet werden. Sollte die Panel URL foo/bar lauten und jemand greift auf foo/bar/5 zu, kann %2 verwendet werden, um die 5 zu erhalten." + +#: content_types/views.inc:152 +msgid "Override URL" +msgstr "URL überschreiben" + +#: content_types/views.inc:154 +msgid "If this is set, override the View URL; this can sometimes be useful to set to the panel URL" +msgstr "Sobald aktiviert, wird die Ansichten URL überschrieben; Manchmal kann es sinnvoll sein, die Panel URL einzusetzten." + +#: content_types/views.inc:160 +msgid "Display view title" +msgstr "Ansichtentitel anzeigen" + +#: content_types/views.inc:161 +msgid "If checked, the title of the view will be displayed." +msgstr "Sobald aktiviert, wird der Titel der Ansicht angezeigt." + Index: modules/panels/panels.admin.inc =================================================================== RCS file: modules/panels/panels.admin.inc diff -N modules/panels/panels.admin.inc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ modules/panels/panels.admin.inc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,621 @@ + TRUE, + '#button_type' => 'submit' + ); + return $type; +} + +/** + * Theme our image button. + */ +function theme_panels_imagebutton($element) { + return '\n"; +} + +function _panels_imagebutton_value() { + // null function guarantees default_value doesn't get moved to #value. +} + +/** + * Add a single button to a form. + */ +function _panels_add_button($image, $name, $text) { + $module_path = base_path() . drupal_get_path('module', 'panels'); + + return array( + '#type' => 'panels_imagebutton', + '#image' => $module_path .'/images/'. $image, + '#title' => $text, + '#default_value' => $name, + ); +} + +/** + * Set a button to a blank image -- used for placeholders when buttons are + * not relevant but just removing it would be visually unappealing. + */ +function _panels_set_blank(&$form) { + $form['#type'] = 'markup'; + $form['#value'] = theme('image', drupal_get_path('module', 'panels') .'/images/blank.gif'); +} + +// --------------------------------------------------------------------------- +// panels administrative pages + +/** + * Provide a list of panels, with links to edit or delete them. + */ +function _panels_list_page() { + $result = db_query("SELECT * FROM {panels_info} ORDER BY title"); + $items = array(); + while ($panels = db_fetch_object($result)) { + $item = array(); + $item[] = check_plain($panels->title); + $item[] = l($panels->path, $panels->path); + $item[] = implode(' | ', array( + l(t('Edit'), "admin/build/panels/edit/$panels->did"), + l(t('Delete'), "admin/build/panels/delete/$panels->did"), + )); + $items[] = $item; + } + $header = array( + t('Panel title'), + t('URL'), + t('Operations'), + ); + $output = theme('table', $header, $items); + return $output; +} + +/* + * Provide a form to confirm deletion of a panel page. + */ +function panels_delete_form(&$form_state, $panel) { + $form['title'] = array('#type' => 'hidden', '#value' => $panel->title); + $form['did'] = array('#type' => 'hidden', '#value' => $panel->did); + + return confirm_form( + $form, + t('Delete panel %title?', array('%title' => $panel->title)), + 'admin/build/panels', + '

'. t('Are you sure you want to delete %title?', array('%title' => $panel->title)) .'

', + t('Delete'), + t('Cancel') + ); +} + +function panels_delete_form_submit($form, &$form_state) { + _panels_delete_panels((object) $form_state['values']); + drupal_set_message(t('The panel %title has been deleted.', array('%title' => $form_state['values']['title']))); + $form_state['redirect'] = 'admin/build/panels'; + return; +} + +/** + * Handle the add panels page + */ +function panels_add_page_form(&$form_state, $layout = NULL) { + + $layouts = _panels_get_layouts(); + $form = array(); + drupal_add_css(drupal_get_path('module', 'panels') .'/panels_admin.css'); + + if (empty($layout)) { + $form['layout'] = array( + '#type' => 'fieldset', + '#title' => t('Layouts'), + '#collapsible' => false, + '#description' => t('Choose a layout for your new page from the list below.') + ); + foreach ($layouts as $id => $layout) { + if (empty($default_id)) { + // grab the first one for our default. + $default_id = $id; + } + $file = _panels_get_file_path($layout['module'], $layout['icon'], false); + $form['layout'][$id] = array( + '#type' => 'image_button', + '#title' => t('Layout @title', array('@title' => $layout['title'])), + '#src' => $file, + '#prefix' => '', + '#layout' => $id, + ); + } + return $form; + } + + if (empty($layouts[$layout])) { + return drupal_not_found(); + } + + $panels->layout = $layout; + // TODO: return drupal_get_form('panels_edit_form', $panels); + return array_merge($form, panels_edit_form($form_state, $panels)); +} + +function panels_add_page_form_submit($form, &$form_state) { + $form_state['redirect'] = 'admin/build/panels/add/'. check_plain($form_state['clicked_button']['#layout']) .'/page'; +} + +// --------------------------------------------------------------------------- +// panels administrative pages + +/** + * shortcut to ease the syntax of the various form builder tricks we use. + */ +function _panels_form_builder($form, &$form_state, $form_id = 'panels_edit_form') { + $form['#post'] = $_POST; + $form = form_builder($form_id, $form, $form_state); +} + +/** + * Edit an already loaded panels. + */ +function panels_edit_form(&$form_state, $panels) { + + drupal_add_css(drupal_get_path('module', 'panels') .'/panels_admin.css'); + $layouts = _panels_get_layouts(); + $layout = $layouts[$panels->layout]; + $content_types = _panels_get_content_types(); + + // Process all our add button stuff first so we can add stuff to the + // form semi dynamically. + $form['add'] = array( + '#type' => 'fieldset', + '#title' => t('Add content'), + '#collapsible' => false, + '#description' => t('Select an area to add content to, then select a type of content and click the appropriate button. The content will be added.'), + ); + + // Drop the array keys into a temporary in order to protect references. + $temp = array_keys($layout['content areas']); + $default_radio = array_shift($temp); + + $form['add']['area'] = array( + '#type' => 'radios', + '#title' => t('Area'), + '#options' => $layout['content areas'], + '#prefix' => '
', + '#suffix' => '
', + '#default_value' => $default_radio, + ); + + foreach ($content_types as $id => $type) { + $function = $type['admin']; + if (function_exists($function)) { + global $form_values; + $form['add'][$id] = $function('add button', $dummy); + + // $dummy needed for cause you can't have default args on a reference. + $form['add'][$id]['#parents'] = array('add', $id); + $form['add'][$id]['#tree'] = true; + $form['add'][$id]['#programmed'] = FALSE; // Fix for D6 core bug + _panels_form_builder($form['add'][$id], $form_state); + + if ($conf = $function('add', $form_state['values']['add'][$id])) { + $add->configuration = $conf; + $add->type = $id; + $form['add']['area']['#parents'] = array('area'); + $form['add']['area']['#programmed'] = FALSE; // D6 fix? + _panels_form_builder($form['add']['area'], $form_state); + $add->area = $form_state['values']['area']; + } + } + } + + $form['layout'] = array( + '#type' => 'value', + '#value' => $panels->layout + ); + + $form['did'] = array( + '#type' => 'value', + '#value' => (!empty($panels->did) ? $panels->did : NULL), + ); + + $form['info'] = array( + '#type' => 'fieldset', + '#title' => t('General information'), + '#collapsible' => false, + ); + + $file = _panels_get_file_path($layout['module'], $layout['icon'], false); + $icon = theme('image', $file); + $form['info']['layout-icon'] = array( + '#value' => '
'. $icon .'
', + ); + + $form['info']['layout-display'] = array( + '#value' => 'Layout: '. $layout['title'], + ); + + $form['info']['title'] = array( + '#type' => 'textfield', + '#default_value' => (!empty($panels->title) ? $panels->title : ''), + '#title' => t('Page title'), + '#description' => t('The page title for this panels layout'), + ); + + $form['info']['css_id'] = array( + '#type' => 'textfield', + '#default_value' => (!empty($panels->css_id) ? $panels->css_id : ''), + '#title' => t('CSS ID'), + '#description' => t('The CSS ID to apply to this page'), + ); + + $rids = array(); + $result = db_query("SELECT r.rid, r.name FROM {role} r ORDER BY r.name"); + while ($obj = db_fetch_object($result)) { + $rids[$obj->rid] = $obj->name; + } + + $form['info']['access'] = array( + '#type' => 'checkboxes', + '#title' => t('Access'), + '#default_value' => (!empty($panels->access) ? $panels->access : ''), + '#options' => $rids, + '#description' => t('Only the checked roles will be able to see this panel in any form; if no roles are checked, access will not be restricted.'), + ); + + $form['info']['path'] = array( + '#type' => 'textfield', + '#default_value' => (!empty($panels->path) ? $panels->path : NULL), + '#title' => t('Path'), + '#description' => t('The URL path to give this page, i.e, path/to/page'), + '#required' => TRUE, + ); + + $form['content'] = array( + '#tree' => true, + ); + + // Go through our content areas and display what we have. + foreach ($layout['content areas'] as $area => $title) { + $list = array(); + $form['content'][$area] = array( + '#tree' => true, + ); + + // Construct the order, feeding it the default order for what + // we know about. When we pull it back out, it may well be + // different due to past submits. + $order = array(); + if (!empty($panels->content[$area])) { + $order = array_keys($panels->content[$area]); + } + $form['content'][$area]['order'] = array( + '#type' => 'hidden', + '#default_value' => serialize($order), + '#parents' => array('content', $area, 'order'), + '#programmed' => FALSE, // Fix for core D6 bug + ); + + // If an add button has added an item to the area, put it in and update + // the $order. + _panels_form_builder($form['content'][$area]['order'], $form_state); + // $order = unserialize($form['content'][$area]['order']['#value']); + $order = array(); + if (!empty($form['content'][$area]['order']['#value'])) { + $order = unserialize($form['content'][$area]['order']['#value']); + } + if ($add->area == $area) { + // say THIS 5 times real fast + if (!empty($panels->content[$area]) && $order) { + $position = max(max(array_keys($order)), max(array_keys($panels->content[$area]))) + 1; + } + else if ($order) { + $position = max(array_keys($order)) + 1; + } + else { + $position = 0; + } + + $panels->content[$area][$position] = $add; + $order[] = $position; + $form['content'][$area]['order']['#value'] = serialize($order); + } + + // Go through each item in the area and render it. + $count = count($order); + foreach ($order as $position => $id) { + // place buttons to re-order content. + $form['content'][$area][$id]['buttons'] = array( + '#parents' => array('content', $area, $id, 'buttons'), + '#tree' => TRUE, + '#programmed' => FALSE, // Fix for core D6 bug + ); + _panels_add_buttons($form['content'][$area][$id]['buttons'], $count, $position); + + // figure out if one of those buttons was pressed + _panels_form_builder($form['content'][$area][$id]['buttons'], $form_state); + $deleted = false; + // FIXME: needs testing if $form_state['values'] works. + // foreach ($GLOBALS['form_values']['content'][$area][$id]['buttons'] as $button => $value) { + foreach ($form_state['values']['content'][$area][$id]['buttons'] as $button => $value) { + if ($value) { + $function = '_panels_move_'. $button; + $function($order, $position); + $form['content'][$area]['order']['#value'] = serialize($order); + if ($button == 'delete') + $deleted = true; + } + } + // If a content item was deleted, it still has buttons. Get rid of them. + // It had buttons because we needed to give it buttons to see if its + // buttons were clicked. + if ($deleted) { + unset($form['content'][$area][$id]['buttons']); + } + else { + // we finally get to add the conent item's content to the form. + $area_record = $panels->content[$area][$id]; + $form['content'][$area][$id]['type'] = array( + '#type' => 'hidden', + '#default_value' => $area_record->type, + '#parents' => array('content', $area, $id, 'type'), + '#programmed' => FALSE, // Fix for core D6 bug + ); + // retrieve what was already there -- so we can retain edits and + // content items that were added. + _panels_form_builder($form['content'][$area][$id]['type'], $form_state); + $type = $form['content'][$area][$id]['type']['#value']; + $function = $content_types[$type]['admin']; + if (function_exists($function)) { + $array = array( + '#tree' => true, + '#parents' => array('content', $area, $id, 'configuration'), + '#programmed' => FALSE, // Fix for core D6 bug + ); + $form['content'][$area][$id]['configuration'] = array_merge($array, $function('edit', $area_record->configuration, array('content', $area, $id, 'configuration'))); + _panels_form_builder($form['content'][$area][$id]['configuration'], $form_state); + } + } + } + } + + $form['submit'] = array( + '#type' => 'submit', + '#value' => t('Save'), + ); + + return $form; +} + +/** + * Display the form to edit a panels. + */ +function theme_panels_edit_form($form) { + $layouts = _panels_get_layouts(); + $layout = $layouts[$form['layout']['#value']]; + + $content_types = _panels_get_content_types(); + + $content = array(); + $output = ''; + $output .= drupal_render($form['info']); + foreach ($layout['content areas'] as $area => $title) { + $order = unserialize($form['content'][$area]['order']['#value']); + $area_content = ''; + $area_description = ''; + if (!$order) { + $area_description = t('This area has no content.'); + } + else { + $count = count($order); + foreach ($order as $position => $id) { + if ($count > 1) { + if ($position == 0 ) { + _panels_set_blank($form['content'][$area][$id]['buttons']['up']); + } + else if ($position == ($count - 1)) { + _panels_set_blank($form['content'][$area][$id]['buttons']['down']); + } + } + $type = NULL; + $function = NULL; + if (!empty($form['content'][$area][$id]['type']['#value'])) { + $type = $form['content'][$area][$id]['type']['#value']; + $function = $content_types[$type]['admin']; + } + if (function_exists($function)) { + // figure out the actual values; using the global because we need it + // to be in the same format it'll be in 'submit'. + global $form_values; + $conf_form = $form_values['content'][$area][$id]['configuration']; + $conf = $function('save', $conf_form); + $fieldset = array( + '#title' => t('Configure'), + '#children' => drupal_render($form['content'][$area][$id]['configuration']), + '#collapsible' => true, + '#collapsed' => true + ); + $buttons = drupal_render($form['content'][$area][$id]['buttons']); + $area_content .= $buttons .' '. $function('list', $conf) . theme('fieldset', $fieldset); + } + } + } + $content[$area] = theme('fieldset', array( + '#title' => check_plain($title), + '#description' => $area_description, + '#value' => $area_content, + '#collapsible' => true, + '#collapsed' => false, + ) + ); + } + + $output .= _panels_get_layout($layout, $content); + + $output .= drupal_render($form); + return $output; +} + +function panels_edit_form_validate($form, &$form_state) { + $content_types = _panels_get_content_types(); + foreach ($form_state['values']['content'] as $area => $content) { + foreach ($content as $id => $item) { + if (is_numeric($id)) { + $function = $content_types[$item['type']]['admin']; + if (function_exists($function)) { + $function('validate', $item['configuration'], $form_state['values']['content'][$area][$id]['configuration']); + } + } + } + } +} + +function panels_edit_form_submit($form, &$form_state) { + $panels = (object) $form_state['values']; + // be sure we get the order right. + foreach ($form_state['values']['content'] as $area => $content) { + $array = array(); + $order = unserialize($content['order']); + if (is_array($order)) { + foreach ($order as $id) { + $array[] = $content[$id]; + } + } + $panels->content[$area] = $array; + } + $panels->access = array_keys(array_filter($panels->access)); + _panels_save_panels($panels); + drupal_set_message(t('The panels has been saved.')); + $form_state['redirect'] = 'admin/build/panels'; +} + +/** + * add the buttons to a content item + */ +function _panels_add_buttons(&$form, $count, $position) { + $form['delete'] = _panels_add_button('user-trash.png', 'delete', t('Delete this item')); + // Leaving these in but commented out as I'm not convinced we don't want them. +// if ($count > 2) { +// $form['top'] = _panels_add_button('go-top.png', 'top', t('Move item to top')); +// } + if ($count > 1) { + $form['up'] = _panels_add_button('go-up.png', 'up', t('Move item up')); + $form['down'] = _panels_add_button('go-down.png', 'down', t('Move item down')); + } +// if ($count > 2) { +// $form['bottom'] = _panels_add_button('go-bottom.png', 'bottom', t('Move item to bottom')); +// } +// if ($count > 1) { +// $form['spacer'] = panels_add_blank(); +// } + return $form; +} + +/** + * move an item in an array to the top + */ +function _panels_move_top(&$array, &$position) { + $value = $array[$position]; + unset($array[$position]); + array_unshift($array, $value); + // reindex the array now + $array = array_values($array); +} + +/** + * move an item in an array to the bottom + */ +function _panels_move_bottom(&$array, &$position) { + $value = $array[$position]; + unset($array[$position]); + $array[] = $value; + // reindex the array now + $array = array_values($array); +} + +/** + * move an item in an array up one position + */ +function _panels_move_up(&$array, &$position) { + $value = $array[$position]; + $array[$position] = $array[$position - 1]; + $array[$position - 1] = $value; +} + +/** + * move an item in an array up one position + */ +function _panels_move_down(&$array, &$position) { + $value = $array[$position]; + $array[$position] = $array[$position + 1]; + $array[$position + 1] = $value; +} + +/** + * Remove an item from an array + */ +function _panels_move_delete(&$array, &$position) { + unset($array[$position]); + // reindex the array now + $array = array_values($array); +} + +// --------------------------------------------------------------------------- +// panels database functions + +function _panels_save_panels($panels) { + $panels->access = implode(', ', $panels->access); + if ($panels->did) { + db_query("UPDATE {panels_info} SET title = '%s', access = '%s', path = '%s', css_id = '%s', layout = '%s' WHERE did = %d", $panels->title, $panels->access, $panels->path, $panels->css_id, $panels->layout, $panels->did); + db_query("DELETE FROM {panels_area} WHERE did = %d", $panels->did); + } + else { + db_query("INSERT INTO {panels_info} (title, access, path, css_id, layout) VALUES ('%s', '%s', '%s', '%s', '%s')", $panels->title, $panels->access, $panels->path, $panels->css_id, $panels->layout); + // Put this in the form so modules can utilize the did of a new panel. + $GLOBALS['form_values']['did'] = db_last_insert_id('panels_info', 'did'); + } + foreach ($panels->content as $area => $info) { + foreach ($info as $position => $block) { + if (is_numeric($position)) { // don't save some random form stuff that may've been here. + $block = (object) $block; + db_query("INSERT INTO {panels_area} (did, area, type, configuration, position) VALUES(%d, '%s', '%s', '%s', %d)", $panels->did, $area, $block->type, serialize($block->configuration), $position); + } + } + } + menu_rebuild(); +} + +function _panels_delete_panels($panels) { + db_query("DELETE FROM {panels_info} WHERE did = %d", $panels->did); + db_query("DELETE FROM {panels_area} WHERE did = %d", $panels->did); + menu_rebuild(); +} + +/** + * Helper function for autocompletion of node titles. + * This is mostly stolen from clipper. + */ +function _panels_node_autocomplete($string) { + if ($string != '') { // if there are node_types passed, we'll use those in a MySQL IN query. + $result = db_query_range(db_rewrite_sql('SELECT n.title, u.name FROM {node} n INNER JOIN {users} u ON u.uid = n.uid WHERE LOWER(title) LIKE LOWER("%%%s%%")'), $string, 0, 10); + $array = array(); // FIXME: looks like dead code!? + $prefix = count($array) ? implode(', ', $array) .', ' : ''; + + $matches = array(); + while ($node = db_fetch_object($result)) { + $n = $node->title; + // Commas and quotes in terms are special cases, so encode 'em. + if (preg_match('/,/', $node->title) || preg_match('/"/', $node->title)) { + $n = '"'. preg_replace('/"/', '""', $node->title) .'"'; + } + $matches[$prefix . $n] = ''. check_plain($node->title) .' ('. t('by %user', array('%user' => check_plain($node->name))) .')'; + } + print drupal_to_js($matches); + exit(); + } +} Index: modules/panels/translations/panels.pot =================================================================== RCS file: modules/panels/translations/panels.pot diff -N modules/panels/translations/panels.pot --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ modules/panels/translations/panels.pot 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,406 @@ +# $Id: panels.pot,v 1.1.2.1 2007/06/02 10:38:29 hass Exp $ +# +# LANGUAGE translation of Drupal (general) +# Copyright YEAR NAME +# Generated from files: +# panels.module,v 1.10.2.9 2007/03/15 23:13:41 merlinofchaos +# threecol_25_50_25_stacked.inc,v 1.5 2006/08/22 23:54:20 merlinofchaos +# threecol_33_34_33.inc,v 1.5 2006/08/22 23:54:20 merlinofchaos +# threecol_33_34_33_stacked.inc,v 1.5 2006/08/22 23:54:20 merlinofchaos +# twocol.inc,v 1.6 2006/08/22 23:54:20 merlinofchaos +# twocol_stacked.inc,v 1.5 2006/08/22 23:54:20 merlinofchaos +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"POT-Creation-Date: 2007-05-31 20:59+0100\n" +"PO-Revision-Date: YYYY-mm-DD HH:MM+ZZZZ\n" +"Last-Translator: NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" + +#: panels.module:382 content_types/custom.inc:90 +msgid "CSS ID" +msgstr "" + +#: content_types/block.inc:75 content_types/views.inc:123 +msgid "Block" +msgstr "" + +#: layouts/threecol_25_50_25.inc:12 layouts/threecol_25_50_25_stacked.inc:14 +#: layouts/threecol_33_34_33.inc:13 layouts/threecol_33_34_33_stacked.inc:14 +#: layouts/twocol.inc:13 layouts/twocol_stacked.inc:14 +msgid "Left side" +msgstr "" + +#: layouts/threecol_25_50_25.inc:12 layouts/threecol_25_50_25_stacked.inc:14 +#: layouts/threecol_33_34_33.inc:13 layouts/threecol_33_34_33_stacked.inc:14 +msgid "Middle column" +msgstr "" + +#: layouts/threecol_25_50_25.inc:12 layouts/threecol_25_50_25_stacked.inc:14 +#: layouts/threecol_33_34_33.inc:13 layouts/threecol_33_34_33_stacked.inc:14 +#: layouts/twocol.inc:13 layouts/twocol_stacked.inc:14 +msgid "Right side" +msgstr "" + +#: layouts/threecol_25_50_25_stacked.inc:14 +#: layouts/threecol_33_34_33_stacked.inc:14 layouts/twocol_stacked.inc:14 +msgid "Top" +msgstr "" + +#: layouts/threecol_25_50_25_stacked.inc:14 +#: layouts/threecol_33_34_33_stacked.inc:14 layouts/twocol_stacked.inc:14 +msgid "Bottom" +msgstr "" + +#: content_types/block.inc:79;86 +msgid "Add block" +msgstr "" + +#: content_types/block.inc:107 +msgid "Override title" +msgstr "" + +#: content_types/block.inc:108 +msgid "" +"If checked, the block title will be overridden with the override title text." +msgstr "" + +#: content_types/block.inc:113 +msgid "Override title text" +msgstr "" + +#: content_types/custom.inc:50 +msgid "Enter an optional title for custom content you define" +msgstr "" + +#: content_types/custom.inc:57;64 +msgid "Add custom" +msgstr "" + +#: content_types/custom.inc:73;74 +msgid "Title" +msgstr "" + +#: content_types/custom.inc:78 +msgid "Body" +msgstr "" + +#: content_types/custom.inc:91 +msgid "CSS ID of this custom content." +msgstr "" + +#: content_types/custom.inc:98 +msgid "CSS class" +msgstr "" + +#: content_types/custom.inc:99 +msgid "CSS class of this custom content." +msgstr "" + +#: content_types/node.inc:42 +msgid "Enter the title or NID of a post" +msgstr "" + +#: content_types/node.inc:50;57 +msgid "Add post" +msgstr "" + +#: content_types/node.inc:68 +msgid "Unable to find \"%s\"" +msgstr "" + +#: content_types/node.inc:82 +msgid "Teaser" +msgstr "" + +#: content_types/node.inc:85 +msgid "Check here to show only the node teaser" +msgstr "" + +#: content_types/node.inc:90 +msgid "Display links" +msgstr "" + +#: content_types/node.inc:91 +msgid "Check here to display the links with the post." +msgstr "" + +#: content_types/node.inc:96 +msgid "Suppress node title" +msgstr "" + +#: content_types/node.inc:97 +msgid "Check here to suppress the node title." +msgstr "" + +#: layouts/threecol_25_50_25.inc:8 +msgid "Three column 25/50/25" +msgstr "" + +#: layouts/threecol_25_50_25_stacked.inc:10 +msgid "Three column 25/50/25 stacked" +msgstr "" + +#: layouts/threecol_33_34_33.inc:9 +msgid "Three column 33/34/33" +msgstr "" + +#: layouts/threecol_33_34_33_stacked.inc:10 +msgid "Three column 33/34/33 stacked" +msgstr "" + +#: layouts/twocol.inc:9 +msgid "Two column" +msgstr "" + +#: layouts/twocol_stacked.inc:10 +msgid "Two column stacked" +msgstr "" + +#: panels.module:11 +msgid "" +"

You may peruse a list of your current panels layouts and edit them, or " +"click add to create a new page.

" +msgstr "" + +#: panels.module:13 +msgid "

Choose a layout for your new page from the list below.

" +msgstr "" + +#: panels.module:60 panels.info:0 +msgid "Panels" +msgstr "" + +#: panels.module:63 +msgid "Create pages on your site that are 2 or 3 columns" +msgstr "" + +#: panels.module:67 +msgid "List" +msgstr "" + +#: panels.module:75;82 +msgid "Add" +msgstr "" + +#: panels.module:89 +msgid "Edit panels" +msgstr "" + +#: panels.module:96 +msgid "Delete panels" +msgstr "" + +#: panels.module:105 +msgid "Autocomplete node" +msgstr "" + +#: panels.module:199 +msgid "Edit" +msgstr "" + +#: panels.module:200;228 +msgid "Delete" +msgstr "" + +#: panels.module:205 +msgid "Panel title" +msgstr "" + +#: panels.module:206 +msgid "URL" +msgstr "" + +#: panels.module:207 +msgid "Operations" +msgstr "" + +#: panels.module:225 +msgid "Are you sure you want to delete %title?" +msgstr "" + +#: panels.module:227 +msgid "This action cannot be undone." +msgstr "" + +#: panels.module:228 +msgid "Cancel" +msgstr "" + +#: panels.module:308 +msgid "Add content" +msgstr "" + +#: panels.module:310 +msgid "" +"Select an area to add content to, then select a type of content and click " +"the appropriate button. The content will be added." +msgstr "" + +#: panels.module:319 +msgid "Area" +msgstr "" + +#: panels.module:358 +msgid "General information" +msgstr "" + +#: panels.module:375 +msgid "Page title" +msgstr "" + +#: panels.module:376 +msgid "The page title for this panels layout" +msgstr "" + +#: panels.module:383 +msgid "The CSS ID to apply to this page" +msgstr "" + +#: panels.module:394 +msgid "Access" +msgstr "" + +#: panels.module:397 +msgid "" +"Only the checked roles will be able to see this panel in any form; if no " +"roles are checked, access will not be restricted." +msgstr "" + +#: panels.module:403 +msgid "Path" +msgstr "" + +#: panels.module:404 +msgid "The URL path to give this page, i.e, path/to/page" +msgstr "" + +#: panels.module:508 +msgid "Save" +msgstr "" + +#: panels.module:527 +msgid "This area has no content." +msgstr "" + +#: panels.module:550 +msgid "Configure" +msgstr "" + +#: panels.module:599 +msgid "The panels has been saved." +msgstr "" + +#: panels.module:607 +msgid "Delete this item" +msgstr "" + +#: panels.module:613 +msgid "Move item up" +msgstr "" + +#: panels.module:614 +msgid "Move item down" +msgstr "" + +#: panels.module:749 +msgid "Unable to find requested layout %s" +msgstr "" + +#: panels.module:853 +msgid "by %user" +msgstr "" + +#: panels.module:749;0 panels.info:0 +msgid "panels" +msgstr "" + +#: panels.module:21 +msgid "create panels" +msgstr "" + +#: panels.module:21 +msgid "access all panels" +msgstr "" + +#: panels.info:0 +msgid "Create pages that are divided into areas of the page." +msgstr "" + +#: content_types/views.inc:86 +msgid "Choose a view from the views module" +msgstr "" + +#: content_types/views.inc:90;97 +msgid "Add view" +msgstr "" + +#: content_types/views.inc:121 +msgid "View type" +msgstr "" + +#: content_types/views.inc:122 +msgid "Select which type of the view to display." +msgstr "" + +#: content_types/views.inc:123 +msgid "Page" +msgstr "" + +#: content_types/views.inc:123 +msgid "Embedded" +msgstr "" + +#: content_types/views.inc:128 +msgid "Pager ID" +msgstr "" + +#: content_types/views.inc:130 +msgid "" +"Select the numeric pager ID to use, or 0 to not have use paging. Select \"1" +"\" if you aren't sure what this means" +msgstr "" + +#: content_types/views.inc:136 +msgid "Posts to Display" +msgstr "" + +#: content_types/views.inc:138 +msgid "Select the number of posts to display, or 0 to display all results." +msgstr "" + +#: content_types/views.inc:144 +msgid "View arguments" +msgstr "" + +#: content_types/views.inc:146 +msgid "" +"Arguments to send to the view as if they were part of the URL in the form of " +"arg1/arg2/arg3. You can use %0, %1, %2, etc, to use arguments from the " +"actual URL. For example, if your panel URL is foo/bar, and someone hits foo/" +"bar/5 use %2 to get the 5." +msgstr "" + +#: content_types/views.inc:152 +msgid "Override URL" +msgstr "" + +#: content_types/views.inc:154 +msgid "" +"If this is set, override the View URL; this can sometimes be useful to set " +"to the panel URL" +msgstr "" + +#: content_types/views.inc:160 +msgid "Display view title" +msgstr "" + +#: content_types/views.inc:161 +msgid "If checked, the title of the view will be displayed." +msgstr ""