See the page http://www.pmwiki.org/wiki/Test/GUIButtons?action=edit and the last button there "Test JS".

You can insert any HTML in the GUI Edit toolbar. If the fourth element of the array starts with "<", it is inserted as-is, without relying on the function insButton().

So, we define the button in a local config file:

$GUIButtons['test-js'] = array(5000, '', '', 'Test-JS',
"<input type='button' name='b1' value='Test JS' onclick='MyFunc()' />");

instead of "<input..." you can have "<img src='$GUIButtonDirUrlFmt/mybuttonicon.png' title='DoXYZ' onclick='MyFunc()'/>" . The onclick part is important, when a user clicks on the button, it will fire your custom function.

Your custom function can be defined in a javascript included by the skin, or even in the same config file:

$HTMLFooterFmt['test-js'] = <<<EOF
<script type="text/javascript">
function MyFunc(){
  var r = Math.round(Math.random()*1000);
  insMarkup(
     "{(mymarkupexpression "+r+" \\"",
     "\\")}\\nThe above number is "+r+"\\n",
     "Default text if none selected");
}
</script>
EOF;

This custom function creates a random number between 0 and 1000, then calls insMarkup() with the constructed strings to be inserted at the position of the cursor.

Hope this helps.

Petko

On 19.09.2014 08:31, Randy Brown wrote:
I would appreciate help from someone who knows Javascript (which I
don't).

I'm creating a GUIEdit button that adds a markup expression containing
a random number and text containing the same number.

If I select in my edit form:

My text

and then click my guiedit button, I want a result like this:

{(mymarkupexpression 2 "My text")}
The above number is 2

Here's approximately what I've written to do this. Unfortunately, what
I wrote uses the same number for each page load rather than for each
button click. I want the number to change with each button click:

$num = rand ( 1, 1000 );
SDVA($GUIButtons, array(
 'mybutton' => array(8000, "{(mymarkupexpression ".$num." &quot;",
"&quot;)}\nThe above number is ".$num."\n [1]", '$[Default text if
none selected]',
 '$GUIButtonDirUrlFmt/mybuttonicon.png"$[DoXYZ]"','')
));
$HTMLHeaderFmt['DoXYZ']= <<<EOF
<script type='text/javascript'><!--
function DoXYZ() {

I IMAGINE THERE IS A WAY TO DO THIS IN JAVASCRIPT

 return;
}
//--></script>

EOF;

Thanks,

Randy

Links:
------
[1] smb://n

_______________________________________________
pmwiki-devel mailing list
pmwiki-devel@pmichaud.com
http://www.pmichaud.com/mailman/listinfo/pmwiki-devel

_______________________________________________
pmwiki-devel mailing list
pmwiki-devel@pmichaud.com
http://www.pmichaud.com/mailman/listinfo/pmwiki-devel

Reply via email to