I believe this is it. It is part of the mediawiki extension that I used as
a starting point for what I need it to do. I am slowly getting better at
PHP, this was dropped into my lap and I don't have much experience yet with
PHP, I come from bash/sed/awk land. This file is structuredinput.php, there
is only one more php file in the extension call specialstructuredinput.php
and I included that after this one as well.
Thanks
<?php
error_reporting(0);
set_include_path(get_include_path() . PATH_SEPARATOR .
$IP.'/extensions/structuredInput/special' );
$StructuredInput = new StructuredInput();
$wgHooks['SpecialPage_initList'][] = array($StructuredInput,
'addToSpecialPages');
$wgHooks['EditPage::showEditForm:initial'][] = array($StructuredInput,
'editForm');
// Bootleg php namespace
class StructuredInput
{
public static $inputList = array();
function getInputList() {
return StructuredInput::$inputList;
}
function addToSpecialPages(&$list) {
global $wgAllMessagesEn;
global $wgMessageCache;
foreach (StructuredInput::getInputList() as $val) {
$key = str_replace (' ', '', strtolower($val));
if (!array_key_exists($key, $wgAllMessagesEn)) {
$wgAllMessagesEn[$key] = $val;
$wgMessageCache->addMessages( array ($key => $val) );
$pageName = str_replace (' ', '', $val);
$list[$pageName] = array('SpecialPage', $pageName);
}
}
$wgAllMessagesEn['structuredinput'] = 'Structured Input Forms';
$wgMessageCache->addMessages( array ('structuredinput' =>
'Structured Input Forms') );
$list['StructuredInput'] = array('SpecialPage', 'StructuredInput');
return true;
}
function editForm(&$form) {
if (!empty($_POST['_type'])) {
$post = $_POST;
require_once('structuredInput/transformations/'.$_POST['_type'].'.php');
$form->textbox1 = $output;
$form->starttime = wfTimestampNow();
$form->edittime = wfTimestampNow();
} elseif (empty($_GET['viewsource']) &&
strpos($form->mArticle->mContent, '<!--|StructuredInput|-->') !== False){
global $wgServerName, $wgScriptPath;
$inputType = str_replace(array('<','!','-','>'),
array('','','',''),
$this->extractStructuredValue('StructuredInput',
$form->mArticle->mContent)
);
header('Location: http://
'.$wgServerName.$wgScriptPath.'/index.php?title=Special:'.$inputType.'&id='.$_GET['title']);
die();
}
return true;
}
function extractStructuredValue($key, $haystack) {
preg_match('/<!--\|'.$key.'\|-->(.*?)<!--\|'.$key.'\|-->/', $haystack,
$matches);
if (!empty($matches)) {
return $matches[1];
} else {
return '';
}
}
function extractStructuredValues($haystack) {
preg_match_all('/<!--\|(.*)\|-->(.*?)<!--\|\1\|-->/s', $haystack,
$matches);
return array_combine($matches[1], $matches[2]);
}
function makeRadios($key, $data, $selectedValue) {
$output = '';
foreach ($data as $item) {
$id = $key.str_replace(' ', '', $item['value']);
if ($item['value'] == $selectedValue) {
$selected = 'checked="checked"';
} else {
$selected = '';
}
$output .= <<<TEXT
<input type="radio" id="$id" name="$key" value="{$item['value']}"
$selected />
<label for="$id"><strong>{$item['value']}</strong>:
{$item['caption']}</label>
<br />
TEXT;
}
return $output;
}
function makeSelect($key, $data, $selectedValue) {
$output = '<select id="'.$key.'" name="'.$key.'">';
foreach ($data as $value) {
if ($value == $selectedValue) {
$selected = ' selected="selected"';
} else {
$selected = '';
}
$output .= '<option'.$selected.'>'.$value.'</option>';
}
$output .= '</select>';
return $output;
}
function getStructuredData($id) {
$pageContent = Revision::newFromTitle( Title::newFromText($id)
)->getText();
$data = StructuredInput::extractStructuredValues($pageContent);
$data['_title'] = $id;
return $data;
}
}
________________________ NEW FILE ______________________
<?php
function wfSpecialStructuredInput() {
global $wgOut, $wgServerName, $wgScriptPath;
$structuredInputs = '';
foreach (StructuredInput::getInputList() as $input) {
$key = ucfirst(str_replace (' ', '', strtolower($input)));
$structuredInputs .= '<li><a href="http://
'.$wgServerName.$wgScriptPath.'/index.php/Special:'.$key.'">'.$input.'</a></li>';
}
if (!empty($structuredInputs)) $structuredInputs =
'<ul>'.$structuredInputs.'</ul>';
$wgOut->addHTML($structuredInputs);
}
?>
On Thu, Jun 9, 2011 at 11:10 AM, Jim Lucas <[email protected]> wrote:
> On 6/9/2011 8:07 AM, matty jones wrote:
> > The two forms work fine by themselves, my issue is getting to two of them
> to
> > work with together, I don't even care if you need to upload the image
> > seperately from submitting the text data as long as it is all on the same
> > page. Thanks for the thoughts on jQuerry, I will look into it.
> >
> > On Thu, Jun 9, 2011 at 10:53 AM, Jim Lucas <[email protected]> wrote:
> >
> >> On 6/9/2011 5:37 AM, matty jones wrote:
> >>> formEl.action += '&title=' + formEl['_title'].value;
> >>
> >> The only thing I see inconsistent is the above line. But then again, it
> >> could
> >> be right. You might be looking for $_GET['title'] in your processing
> page
> >> instead of $_GET['_title']
> >>
> >
>
> Can you show the PHP code that you use to process the form data text
> fields?
>