Actions

Difference between revisions of "Mahara日本語ドキュメント/基本PHPファイルテンプレート"

From Mahara Wiki

< Mahara日本語ドキュメント
Line 1: Line 1:
 +
再作成中です - [[User:Mits|mits]] ([[User talk:Mits|talk]])
 +
 
以下、すべての新しいPHPファイル用のテンプレートです。あなたのファイルに外部からアクセスできるか否かにより、異なるテンプレートがあります。
 
以下、すべての新しいPHPファイル用のテンプレートです。あなたのファイルに外部からアクセスできるか否かにより、異なるテンプレートがあります。
  
Line 46: Line 48:
 
* 勤務時間にプロジェクトの作業を実施した場合、Catalyst社員は著作権表示 "Catalyst IT Ltd" を追加してください。
 
* 勤務時間にプロジェクトの作業を実施した場合、Catalyst社員は著作権表示 "Catalyst IT Ltd" を追加してください。
 
* 作者 (author) フィールドには、会社ではなく、常に人 (1名または複数名) を指定してください。
 
* 作者 (author) フィールドには、会社ではなく、常に人 (1名または複数名) を指定してください。
 +
 +
== Sample page using pieforms and dwoo ==
 +
 +
<source lang="php" enclose="div">
 +
<?php
 +
 +
define('INTERNAL', 1);
 +
require('init.php');
 +
require_once('pieforms/pieform.php');
 +
 +
// Get data from the user by using the param_ functions, which will whitelist
 +
// the input
 +
$userint = param_integer('int',0);
 +
// If none of the whitelisting options is acceptable, you can use param_variable,
 +
// but be careful not to print the results to the screen without cleaning them
 +
// first. That's a XSS vulnerability.
 +
$userraw = param_variable('raw', 'no user input provided');
 +
 +
// Generate page content
 +
// NOTE: Normally you should put hard-coded strings into a lang file under /lang, so that
 +
// they can be internationalized with get_string()
 +
$hardcoded = "This is a hard-coded string";
 +
 +
// See https://wiki.mahara.org/index.php/Developer_Area/Core_Subsystems/Form_API_%28Pieforms%29
 +
// Normally you'd populate the default values with values from the DB
 +
$form = array(
 +
    'name' => 'testform',
 +
    'method' => 'post',
 +
    'action' => "", // self
 +
    'successcallback' => 'testform_submit', // defaults to name_submit
 +
    'validatecallback' => 'testform_validate', // defaults to name_validate
 +
    'elements' => array(
 +
        'fullname' => array(
 +
            'type' => 'fieldset',
 +
            'legend' => "Your name", // should use get_string()...
 +
            'elements' => array(
 +
                'firstname' => array(
 +
                    'type' => 'text',
 +
                    'title' => "First name", // should use get_string()
 +
                    'description' => "Your first, or given name", // get_string()
 +
                    'help' => "Surely you know your own first name.", // get_string()
 +
                    'defaultvalue' => 'Joe',
 +
                    'rules' => array(
 +
                        'required' => true
 +
                    )
 +
                ),
 +
                'lastname' => array(
 +
                    'type' => 'text',
 +
                    'title' => "Last name", // get_string()
 +
                    'defaultvalue' => 'Schmoe',
 +
                    'description' => "Your last, or family name", // get_string()
 +
                )
 +
            )
 +
        ),
 +
        'submitbtn' => array(
 +
            'type' => 'submit',
 +
            'value' => "Submit" // get_string()
 +
        )
 +
    )
 +
);
 +
 +
function testform_validate(Pieform $form, $values) {
 +
    if (isset($values['lastname']) && $values['firstname'] == 'Joe' && $values['lastname'] == 'Schmoe') {
 +
        $form->set_error('lastname', "That's not your real name! That was the default."); // get_string()
 +
    }
 +
}
 +
 +
function testform_submit(Pieform $form, $values) {
 +
    global $SESSION;
 +
    // Normally here you would save the submitted values into the database
 +
 +
    // If you set this up as a JS form, use json_reply()
 +
    if (!empty($values['lastname'])) {
 +
        $name = "{$values['firstname']} {$values['lastname']}";
 +
    } else {
 +
        $name = $values['firstname'];
 +
    }
 +
    $SESSION->add_ok_msg("Kia ora, {$name}!");
 +
    redirect(get_config('wwwroot') . 'test.php');
 +
}
 +
 +
// When you call pieform(), the Pieforms library does a bunch of automagical stuff.
 +
// It checks whether the form was submitted, and if so calls the form's validate
 +
// and/or submit callback functions, which usually results in a call to redirect(), ending
 +
// the page load.
 +
// If the form wasn't yet submitted, then pieform() renders the form into the necessary
 +
// HTML to print it on the page.
 +
// IMPORTANT: all pieform rendering needs to happen before calling smarty() for javascript
 +
// to be added to the page correctly
 +
$formhtml = pieform($form);
 +
 +
// Instantiate the smarty object.
 +
$smarty = smarty();
 +
// Variables you assign to the smarty become accessible in the template
 +
$smarty->assign('hard_coded', $hardcoded);
 +
$smarty->assign('user_raw', $userraw);
 +
 +
$smarty->assign('form', $formhtml);
 +
 +
// Specify the template file path, relative to htdocs/theme/raw/templates/
 +
$smarty->display('test.tpl');
 +
</source>
 +
 +
The contents of htdocs/theme/raw/templates/test.tpl should look like this:
 +
 +
<source lang="smarty" enclose="div">
 +
{include file="header.tpl"}
 +
<!-- Stuff in here is HTML except for the bits in curly braces -->
 +
 +
<!-- All variables printed here are run through an HTML escaping process, unless
 +
they have the "|safe" tag. -->
 +
{$hard_coded|safe}
 +
 +
<!-- Uncleaned user data shouldn't be considered safe -->
 +
{$user_raw}
 +
 +
<!-- Any function in the calling PHP file's namespace can be invoked by adding
 +
it after a "|" in the curly brackets -->
 +
{$hard_coded|strtoupper}
 +
 +
<!-- The output from pieform() is the HTML output of the form. So you can just print it. -->
 +
{$form|safe}
 +
{include file="footer.tpl"}
 +
</source>

Revision as of 02:27, 9 March 2016

再作成中です - mits (talk)

以下、すべての新しいPHPファイル用のテンプレートです。あなたのファイルに外部からアクセスできるか否かにより、異なるテンプレートがあります。

このプロジェクトでは、APIドキュメントにPHPDocsを使用します。また、このプロジェクトはGPLとして許諾され、結果としてヘッダには特定の文言が含まれます (あなたのプログラムがGPLとして許諾されるためには、この文言が必要です。詳細はhttp://www.gnu.org/copyleft/gpl.htmlをご覧ください)。

訪問者がアクセスすると考えられるファイルのテンプレート

.
/**
  * Mahara: Electronic portfolio, weblog, resume builder and social networking
  * Copyright (C) 2011 Copyright Holder
  *
  * (rest of the GPL statement)
  *
  * @package    mahara
  * @subpackage core or plugintype/pluginname
  * @author     Firstname Lastname
  */

 define('INTERNAL', 1);
 require('init.php');

 // ここにあなたのコードを記述します :)

あなたが訪問者にアクセスして欲しくないファイルのテンプレート

.
/**
  * Mahara: Electronic portfolio, weblog, resume builder and social networking
  * Copyright (C) 2011 Copyright Holder
  *
  * (rest of the GPL statement)
  *
  * @package    mahara
  * @subpackage core or plugintype/pluginname
  * @author     Firstname Lastname
  */

 defined('INTERNAL') || die();

 // ここにあなたのコードを記述します :)

メモ:

  • php閉じタグ "?>" は入れないでください。
  • 勤務時間にプロジェクトの作業を実施した場合、Catalyst社員は著作権表示 "Catalyst IT Ltd" を追加してください。
  • 作者 (author) フィールドには、会社ではなく、常に人 (1名または複数名) を指定してください。

Sample page using pieforms and dwoo

<?php

define('INTERNAL', 1);
require('init.php');
require_once('pieforms/pieform.php');

// Get data from the user by using the param_ functions, which will whitelist
// the input
$userint = param_integer('int',0);
// If none of the whitelisting options is acceptable, you can use param_variable,
// but be careful not to print the results to the screen without cleaning them
// first. That's a XSS vulnerability.
$userraw = param_variable('raw', 'no user input provided');

// Generate page content
// NOTE: Normally you should put hard-coded strings into a lang file under /lang, so that
// they can be internationalized with get_string()
$hardcoded = "This is a hard-coded string";

// See https://wiki.mahara.org/index.php/Developer_Area/Core_Subsystems/Form_API_%28Pieforms%29
// Normally you'd populate the default values with values from the DB
$form = array(
    'name' => 'testform',
    'method' => 'post',
    'action' => "", // self
    'successcallback' => 'testform_submit', // defaults to name_submit
    'validatecallback' => 'testform_validate', // defaults to name_validate
    'elements' => array(
        'fullname' => array(
            'type' => 'fieldset',
            'legend' => "Your name", // should use get_string()...
            'elements' => array(
                'firstname' => array(
                    'type' => 'text',
                    'title' => "First name", // should use get_string()
                    'description' => "Your first, or given name", // get_string()
                    'help' => "Surely you know your own first name.", // get_string()
                    'defaultvalue' => 'Joe',
                    'rules' => array(
                        'required' => true
                    )
                ),
                'lastname' => array(
                    'type' => 'text',
                    'title' => "Last name", // get_string()
                    'defaultvalue' => 'Schmoe',
                    'description' => "Your last, or family name", // get_string()
                )
            )
        ),
        'submitbtn' => array(
            'type' => 'submit',
            'value' => "Submit" // get_string()
        )
    )
);

function testform_validate(Pieform $form, $values) {
    if (isset($values['lastname']) && $values['firstname'] == 'Joe' && $values['lastname'] == 'Schmoe') {
        $form->set_error('lastname', "That's not your real name! That was the default."); // get_string()
    }
}

function testform_submit(Pieform $form, $values) {
    global $SESSION;
    // Normally here you would save the submitted values into the database

    // If you set this up as a JS form, use json_reply()
    if (!empty($values['lastname'])) {
        $name = "{$values['firstname']} {$values['lastname']}";
    } else {
        $name = $values['firstname'];
    }
    $SESSION->add_ok_msg("Kia ora, {$name}!");
    redirect(get_config('wwwroot') . 'test.php');
}

// When you call pieform(), the Pieforms library does a bunch of automagical stuff.
// It checks whether the form was submitted, and if so calls the form's validate
// and/or submit callback functions, which usually results in a call to redirect(), ending
// the page load.
// If the form wasn't yet submitted, then pieform() renders the form into the necessary
// HTML to print it on the page.
// IMPORTANT: all pieform rendering needs to happen before calling smarty() for javascript
// to be added to the page correctly
$formhtml = pieform($form);

// Instantiate the smarty object.
$smarty = smarty();
// Variables you assign to the smarty become accessible in the template
$smarty->assign('hard_coded', $hardcoded);
$smarty->assign('user_raw', $userraw);

$smarty->assign('form', $formhtml);

// Specify the template file path, relative to htdocs/theme/raw/templates/
$smarty->display('test.tpl');

The contents of htdocs/theme/raw/templates/test.tpl should look like this:

{include file="header.tpl"}
<!-- Stuff in here is HTML except for the bits in curly braces -->

<!-- All variables printed here are run through an HTML escaping process, unless
they have the "|safe" tag. -->
{$hard_coded|safe}

<!-- Uncleaned user data shouldn't be considered safe -->
{$user_raw}

<!-- Any function in the calling PHP file's namespace can be invoked by adding
it after a "|" in the curly brackets -->
{$hard_coded|strtoupper}

<!-- The output from pieform() is the HTML output of the form. So you can just print it. -->
{$form|safe}
{include file="footer.tpl"}