在 mediawiki 1.3 中单击按钮将标志保存到数据库

发布于 2025-01-20 05:38:07 字数 2548 浏览 1 评论 0原文

我在Mediawiki中是个新鲜事。我试图实现手册:tag扩展/示例( htttps> htttps:htttps://www.mediawiki。 org/wiki/手册:tag_extensions/示例)。但是示例基于Mediawiki版本< 1.3。我有一个提交按钮。如果单击“提交”按钮,我想将当前用户名和标志(例如1)保存到数据库表。但是我得到了 uck offact的语法:意外的标识符(在load.php?lang = en& amp; ext.ext.example.example.welcome%7cjquery& skin = vector&版本= h3cy2:1:1:383)。

我可以建议如何解决这个问题吗 我的钩

class PollHooks implements
\MediaWiki\Hook\ParserFirstCallInitHook
{
Public function onParserFirstCallInit( $parser ) {
    $parser->setHook( 'btn', [ self::class, 'pollRender' ] );
    //$parser->setHook( 'poll', [self::class, 'pollRender' ] ); 
}
public static function pollRender( $data, $attribs, $parser, $frame ) {
    $ret = '<table class="wtable">';
    $ret .= '<tr>';
    $ret .= '<td align="center" colspan=2><input id="btn002" type="button" value="Submit"></td>';
    $ret .= '</tr>';
    $ret .= '</table>';
    return $ret;
}

我的index.js

( function () {
$("#btn001").click
        (
            function() {
                alert("Button clicked " + mw.user.getName() + ".");
                
                console.log("Button clicked.");
                $var user = mw.user.getName();
                $flag = 1;
                
                $.get(
                        mw.util.wikiScript(),
                        {
                            action: 'ajax',
                            rsargs: [user, flag],
                            rs: 'MediaWiki\\Extension\\Example\\SubmitApi'
                        }
                );
            }
        );

}());

submapi.php

use ApiBase;

使用wikimedia \ paramvalidator \ paramvalidator;

类Sumperapi扩展了APIBASE {

public function execute() {
    /* … */
    global $wgUser;
    
    
    $dbw = wfGetDB( DB_REPLICA );
    
    // Insert vote
    $insertQuery = $dbw->insert(
                   'polldb',
                    array(
                        'poll_user' => $user,
                        'poll_flag' => $flag
                    )
    );
    $dbw->commit();
}

public function getAllowedParams() {
    return [
        'level' => [
            ParamValidator::PARAM_TYPE => 'integer',
            ParamValidator::PARAM_REQUIRED => true,
        ]
    ];
}

} ?&gt;

I am a fresher in mediawiki. I was trying to implement Manual:Tag extensions/Example (https://www.mediawiki.org/wiki/Manual:Tag_extensions/Example). But the example is based on mediawiki version < 1.3. I have a submit button. I want to save the current user name and a flag (say 1) to a database table if the submit button is clicked. but I am getting
Uncaught SyntaxError: Unexpected identifier (at load.php?lang=en&modules=ext.Example.welcome%7Cjquery&skin=vector&version=h3cy2:1:383).

Can I anyone suggest how to resolve the issue
My hook

class PollHooks implements
\MediaWiki\Hook\ParserFirstCallInitHook
{
Public function onParserFirstCallInit( $parser ) {
    $parser->setHook( 'btn', [ self::class, 'pollRender' ] );
    //$parser->setHook( 'poll', [self::class, 'pollRender' ] ); 
}
public static function pollRender( $data, $attribs, $parser, $frame ) {
    $ret = '<table class="wtable">';
    $ret .= '<tr>';
    $ret .= '<td align="center" colspan=2><input id="btn002" type="button" value="Submit"></td>';
    $ret .= '</tr>';
    $ret .= '</table>';
    return $ret;
}

My index.js

( function () {
$("#btn001").click
        (
            function() {
                alert("Button clicked " + mw.user.getName() + ".");
                
                console.log("Button clicked.");
                $var user = mw.user.getName();
                $flag = 1;
                
                $.get(
                        mw.util.wikiScript(),
                        {
                            action: 'ajax',
                            rsargs: [user, flag],
                            rs: 'MediaWiki\\Extension\\Example\\SubmitApi'
                        }
                );
            }
        );

}() );

SubmitApi.php

use ApiBase;

use Wikimedia\ParamValidator\ParamValidator;

class SubmitApi extends ApiBase {

public function execute() {
    /* … */
    global $wgUser;
    
    
    $dbw = wfGetDB( DB_REPLICA );
    
    // Insert vote
    $insertQuery = $dbw->insert(
                   'polldb',
                    array(
                        'poll_user' => $user,
                        'poll_flag' => $flag
                    )
    );
    $dbw->commit();
}

public function getAllowedParams() {
    return [
        'level' => [
            ParamValidator::PARAM_TYPE => 'integer',
            ParamValidator::PARAM_REQUIRED => true,
        ]
    ];
}

}
?>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眼趣 2025-01-27 05:38:07

index.js

$var user = mw.user.getName();

$ var中删除$

index.js:

$var user = mw.user.getName();

Remove the $ from $var.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文