From: <lph...@us...> - 2008-07-25 17:30:28
|
Revision: 13889 http://tikiwiki.svn.sourceforge.net/tikiwiki/?rev=13889&view=rev Author: lphuberdeau Date: 2008-07-25 17:30:37 +0000 (Fri, 25 Jul 2008) Log Message: ----------- [MOD] Plugin UI now usable in wiki page Modified Paths: -------------- branches/experimental/plugin_ui/lib/tiki-js.js branches/experimental/plugin_ui/lib/tikilib.php branches/experimental/plugin_ui/tiki-wikiplugin_edit.php Modified: branches/experimental/plugin_ui/lib/tiki-js.js =================================================================== --- branches/experimental/plugin_ui/lib/tiki-js.js 2008-07-25 17:16:02 UTC (rev 13888) +++ branches/experimental/plugin_ui/lib/tiki-js.js 2008-07-25 17:30:37 UTC (rev 13889) @@ -1239,18 +1239,18 @@ } } -function show_plugin_form( type, index, pageName, args ) +function show_plugin_form( type, index, pageName, args, bodyContent ) { var target = document.getElementById( type + index ); var content = target.innerHTML; - var form = build_plugin_form( type, index, pageName, args ); + var form = build_plugin_form( type, index, pageName, args, bodyContent ); target.innerHTML = ''; target.appendChild( form ); } -function build_plugin_form( type, index, pageName, args ) +function build_plugin_form( type, index, pageName, args, bodyContent ) { var form = document.createElement( 'form' ); form.method = 'post'; @@ -1316,6 +1316,27 @@ table.appendChild( row ); } + var bodyRow = document.createElement( 'tr' ); + var bodyCell = document.createElement( 'td' ); + var bodyField = document.createElement( 'textarea' ); + var bodyDesc = document.createElement( 'div' ); + + if( meta.body ) + bodyDesc.innerHTML = meta.body; + else + bodyRow.style.display = 'none'; + + bodyField.name = 'content'; + bodyField.value = bodyContent; + + bodyRow.className = 'formcolor'; + + table.appendChild( bodyRow ); + bodyRow.appendChild( bodyCell ); + bodyCell.appendChild( bodyDesc ); + bodyCell.appendChild( bodyField ); + bodyCell.colSpan = '2'; + var submitRow = document.createElement( 'tr' ); var submitCell = document.createElement( 'td' ); var submit = document.createElement( 'input' ); Modified: branches/experimental/plugin_ui/lib/tikilib.php =================================================================== --- branches/experimental/plugin_ui/lib/tikilib.php 2008-07-25 17:16:02 UTC (rev 13888) +++ branches/experimental/plugin_ui/lib/tikilib.php 2008-07-25 17:30:37 UTC (rev 13889) @@ -5237,7 +5237,7 @@ include_once('lib/smarty_tiki/function.icon.php'); global $headerlib, $page; $headerlib->add_jsfile( 'tiki-jsplugin.php?plugin=' . urlencode( $plugin_name ) ); - $ret = '<div><div style="float:right;"><a href="javascript:void(0)" onclick="show_plugin_form(\'' . addslashes($plugin_name) . '\', ' . addslashes($current_index) . ', \'' . addslashes($page) . '\', ' . htmlentities(json_encode($arguments)) . ');this.style.display=\'none\'">'.smarty_function_icon(array('_id'=>'page_edit', 'alt'=>tra('Edit Plugin')), $smarty).'</a></div><div id="' . $plugin_name . $current_index . '">' . $ret . '</div></div>'; + $ret = '<div><div style="float:right;"><a href="javascript:void(0)" onclick="show_plugin_form(\'' . addslashes($plugin_name) . '\', ' . addslashes($current_index) . ', \'' . addslashes($page) . '\', ' . htmlentities(json_encode($arguments)) . ', ' . htmlentities(json_encode($plugin_data)) . ');this.style.display=\'none\'">'.smarty_function_icon(array('_id'=>'page_edit', 'alt'=>tra('Edit Plugin')), $smarty).'</a></div><div id="' . $plugin_name . $current_index . '">' . $ret . '</div></div>'; } } else { // Handle nested plugins. Modified: branches/experimental/plugin_ui/tiki-wikiplugin_edit.php =================================================================== --- branches/experimental/plugin_ui/tiki-wikiplugin_edit.php 2008-07-25 17:16:02 UTC (rev 13888) +++ branches/experimental/plugin_ui/tiki-wikiplugin_edit.php 2008-07-25 17:30:37 UTC (rev 13889) @@ -5,8 +5,22 @@ die( 'Missing parameters' ); $page = $_POST['page']; -$type = strtoupper( $_POST['type'] ); +$plugin = basename( $_POST['type'] ); +$type = strtoupper( $plugin ); +$file = 'lib/wiki-plugins/wikiplugin_' . $plugin . '.php'; +$info = "wikiplugin_{$plugin}_info"; + +if( ! file_exists( $file ) ) + exit; + +include $file; + +if( ! function_exists( $info ) ) + exit; + +$meta = $info(); + $info = $tikilib->get_page_info($page); $tikilib->get_perm_object($page, 'wiki page', $info, true); if ($tiki_p_edit != 'y') { @@ -35,6 +49,23 @@ $before = substr( $current, 0, $body ); $after = substr( $current, $endbody ); + // If parameters are provided, rebuild the parameter line + if( isset( $_POST['params'] ) && is_array( $_POST['params'] ) ) + { + $values = array_intersect_key( $_POST['params'], $meta['params'] ); + + $parts = array(); + foreach( $values as $key => $value ) + if( ! empty( $value ) ) + $parts[] = "$key=>\"$value\""; + + $params = implode( ',', $parts ); + + $before = substr( $before, 0, $pos ) + . "{{$type}($params)}"; + } + + // Replace the content $content = $before . "\n" . $content . $after; $tikilib->update_page( $page, $content, tra('Image annotations changed.'), $user, $_SERVER['REMOTE_ADDR'] ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |