Xoopsモジュール

更新日2013-04-12 (金) 23:02:26

Topページの内容

システム管理 -> ブロック管理 -> コンテンツ内容(編集)

オプション : コンテンツ番号

piCal(カレンダー)の表示サイズ変更

piCalの月予定や、予定一覧を表示するとレイアウトによっては左右のブロックが 飛び出し、レイアウトが崩れる。これはpiCalが一定の大きさ小さくならないためおきるので、大きさ指定を変更する。
今回は必要最小だけ行ったので、表示オプションの指定によっては追加が必要かも。

予定一覧画面

ここは日付指定の帯の幅で全体の幅が決まるようだ

互換レンダーシステム »» テンプレート管理 »» テンプレートセット一覧

アクティブ側のpiCal->pical_event_list.html を選択

<!-- 日付指定を指定する帯の幅を変更
      <table border='0' cellspacing='0' cellpadding='0' style='width:640px;'>
-->
      <table border='0' cellspacing='0' cellpadding='0' style='width:480px;'>
        <tr>
          <td>
            <{$cat_desc}>
          </td>
        </tr>
        <tr>
          <td nowrap='nowrap' align='center' bgcolor='<{$calhead_bgcolor}>'>
<!-- 「Jump」の右の月や週表示に変更するボタン4つの領域の幅を変更
            <table border='0' cellspacing='0' cellpadding='0' width='640' class='pical-categoryform'>
-->
            <table border='0' cellspacing='0' cellpadding='0' width='300' class='pical-categoryform'>


              <tr>

                <{* CATEGORY SELECT FORM *}>
<!--「Jump」の右の月や週表示に変更するボタン表示領域とバランス調整のためにある年指定の前のダミー領域の削除
                <td align='center' valign='middle' style='vertical-align:middle;' class='pical-categoryform'>
                  <{$categories_selform}>
                </td>
-->

月表示

上部(月や週表示に変更するボタン4つの領域)と下の2つの小さいカレンダーの変更は

modules/piCal/images/default/monthly.tmpl.html

        <!-- header -->
<!-- 日付指定を指定する帯の幅を変更
        <table border='0' cellspacing='0' cellpadding='0' style='width:640px;border-collapse:collapse;'>
-->
        <table border='0' cellspacing='0' cellpadding='0' style='width:520px;border-collapse:collapse;'>
         <tr>
           <td><img src='{SKINPATH}/spacer.gif' alt='' width='10' height='30' /></td>
           <td nowrap='nowrap' colspan='7' align='center' bgcolor='{CALHEAD_BGCOLOR}'>

<!-- 月や週表示に変更するボタン4つの領域の幅を変更
              <table border='0' cellspacing='0' cellpadding='0' width='630' class='pical-categoryform'>
-->
             <table border='0' cellspacing='0' cellpadding='0' width='380' class='pical-categoryform'>
             <tr>

<!--月や週表示に変更するボタン表示領域とバランス調整のためにある年指定の前のダミー領域の削除
               <td align='center' valign='middle' style='vertical-align:middle;' class='pical-categoryform'>{CATEGORIES_SELFORM}</td>
-->


        {CALENDAR_BODY}

      </td>
    </tr>
  </table>
  <br />
<!--
  <table border='0' cellspacing='0' cellpadding='0' width='570'>
-->
  <table border='0' cellspacing='0' cellpadding='0' width='520'>
    <tr>
      <td width='20' valign='top'><img src='{SKINPATH}/spacer.gif' alt='' width='20' height='8' /></td>
      <td width='150' valign='top'>
<!--
        <table border='0' cellspacing='0' cellpadding='0' width='150'>
-->    
        <table border='0' cellspacing='0' cellpadding='0' width='50'>
          <tr>
<!--
            <td width='150' colspan='2' style='vertical-align:middle;'><img src='{SKINPATH}/spacer.gif' alt='' width='150' height='8' /></td>
-->
            <td width='50' colspan='2' style='vertical-align:middle;'><img src='{SKINPATH} /spacer.gif' alt='' width='50' height='8' /></td>
          </tr>

<!--
  <table border='0' cellspacing='0' cellpadding='0' width='570'>
-->
  <table border='0' cellspacing='0' cellpadding='0' width='520'>
    <tr>
      <td width='10'><img src='{SKINPATH}/spacer.gif' alt='' width='10' height='10' /></td>
<!--
      <td width='560' align='right'>{COPYRIGHT}</td>
-->
      <td width='520' align='right'>{COPYRIGHT}</td>
    </tr>
    <tr>
      <td width='10'><img src='{SKINPATH}/spacer.gif' alt='' width='10' height='10' /></td>
<!--   
      <td width='560' align='right'><a href="{PRINT_LINK}" target="_blank"><img src="{SKINPATH}/print.gif" alt="{LANG_PRINT}" 
 title="{LANG_PRINT}" border="0" {PRINT_ATTRIB} /></a><
-->
      <td width='520' align='right'><a href="{PRINT_LINK}" target="_blank"><img src="{SKINPATH}/print.gif" alt="{LANG_PRINT}" 
 title="{LANG_PRINT}" border="0" {PRINT_ATTRIB} /></a></td>

中心の大きなカレンダーの変更は

piCal/class/piCal.php

// カレンダーの本体を返す(1ヶ月分)
function get_monthly_html( $get_target = '' , $query_string = '' )
{
(略)

         <table border='0' cellspacing='0' cellpadding='0' style='width:520px;border-collapse:collapse;margin:0px;'>
         <tr class='pical-monthly'>
<!--
           <td class='pical-weekmark'><img src='$this->images_url/spacer.gif' alt='' width='10' height='10' /></td>
           <td><img src='$this->images_url/spacer.gif' alt='' width='90' height='10' /></td>
           <td><img src='$this->images_url/spacer.gif' alt='' width='90' height='10' /></td>
           <td><img src='$this->images_url/spacer.gif' alt='' width='90' height='10' /></td>
           <td><img src='$this->images_url/spacer.gif' alt='' width='90' height='10' /></td>
           <td><img src='$this->images_url/spacer.gif' alt='' width='90' height='10' /></td>
           <td><img src='$this->images_url/spacer.gif' alt='' width='90' height='10' /></td>
           <td><img src='$this->images_url/spacer.gif' alt='' width='90' height='10' /></td>
         </tr>
-->

<!--以下のwidthが曜日表示と各日の幅を指定しているので変更

                        // 対象月の範囲外にある日の処理
                        if( ! checkdate($this->month,$date,$this->year) ) {
                                if( $date < 28 ) $ret .= "<td bgcolor='#EEEEEE' style='$this->frame_css'><span class='calbody'>
 <img src='$this->images_url/spacer.gif' alt='' width='72' height='70' /></span></td>\n" ;
                                else $ret .= "<td><span class='calbody'><img src='$this->images_url/spacer.gif' alt='' width='72' 
height='70' /></span></td>\n" ;
                                continue ;
                       }

同様に全体、週、日の変更もmodules/piCal/images/default/以下のyearly.tmpl.html、weekly.tmpl.html、daily.tmpl.htmlとpiCal/class/piCal.phpの必要なところを修正する

Xoops携帯対応

xmobileは終了したようなので、WizMobileを使用する。

http://www.gusagi.com/modules/blog/details.php?bid=135 からDownload

展開して他のモジュール同様に配置する。すこし変わったところですは

(xoopsルート)/settings/site_custom.ini.phpを作製

[RenderSystems]
Legacy_WizMobileRenderSystem=Legacy_WizMobileRenderSystem

[Legacy]
AllowDBProxy=false

[Legacy_Controller]
root=XOOPS_TRUST_PATH
path=/modules/wizxc/class
class=Legacy_WizXcController

[Legacy_WizMobileRenderSystem]
root=XOOPS_TRUST_PATH
path=/modules/wizmobile/class
class=Legacy_WizMobileRenderSystem

(xoopsルート)/uploads/wizmobileを作成

$ chmod a+w wizmobile

(xoopsルート)/preload/HdXoopsTplHook.class.php
(xoopsルート)/themes/mobile

をコピー

(xoopsルート)/xoops_trust_path/cacheを作成

$ chmod a+w cache

xoops_trust_path/にwizinをコピー

xoops_trust_path/modules/にwizmobileと wizxcをコピー

不具合としてはpicoのブロック管理で「表示先のモジュール」をトップページ以外を指定すると表示しなしようだ。

function.pico.php

picoのページをインポートする

class/smarty/plugins/function.pico.phpを作成する(いただいたのをページに添付してある)

Smarty(XoopsTpl) にチェックを入れる

使用方法

<{pico dir="pico" id="4"}>

idはpicoの表示したいcontent_id

http://xoops.peak.ne.jp/md/news/index.php?page=article&storyid=415からfunction.pico.phpをダウンロード

picoでphp

本文フィルターでphpコードを入れて<?php ?>を入れない。自動改行のチェックははずす。

POST

$_POST['dataA']が存在しない(定義されていない)場合にエラーが表示される。 この場合下記のようにisset関数を使えばエラーの回避ができる。

if(isset($_POST['dataA']) && $_POST['dataA']){ <==(1)
  $dataA = $_POST['dataA'];
  echo "$dataA <br>";
} 

(1)で変数が定義されていないと
Notice [PHP]: Undefined index: dataA in file /home/okada/xoops_trust/modules/pico/filters/pico_eval.php(9) : eval()'d code line 5
というエラーが出る

userのチェック

global $xoopsUser; //ブロックの時に必要

$uname = '';
$uid = 0;
if(!empty($xoopsUser)) {   // ユーザがログインしている
    // ユーザ名の取得
    $uname = $xoopsUser->getVar('uname');
    if($uname == '') {
        $uname = $xoopsUser->getVar('name');
    }

    // ユーザIDの取得
    $uid = $xoopsUser->getVar('uid');
    echo "ユーザ $uname <br>";
    echo "ID $uid <br>";
}else{
    echo "Loginしていません <Br>";
}

loginユーザグループの取得

if(!empty($xoopsUser)) {

//グループ情報の取得
    $groups = $xoopsUser->getGroups();
    $group_handler =& xoops_gethandler('group');

    $g = $group_handler->get($groups[0]);
    $groupid = $g->getVar('groupid');
    $name = $g->getVar('name');
    $description = $g->getVar('description');
    $group_type  = $g->getVar('group_type');

    echo "User Group $groupid  $name <br>";
}

複数インストール

最初にインストールしたxoops_trust_pathなどのファイルは、アップする 必要がないようだ。
modulesの中に入っている各モジュールフォルダのアップだけで良い。

pico解凍→htmlフォルダ→moduleフォルダ→picoフォルダ

この「picoフォルダ」だけアップロードすれば良い。
もちろん、pico1とか、pico2のように、フォルダ名をリネームする必要あり。

FCKeditor

解凍後(xoopsのルート)/common/fckeditorに入れる カスタムモジュールで使用するには
modules/legacy/admin/templates/customblock_edit.htmlを以下のように変更

ファイルの先頭に

<script type="text/javascript" src="<{$xoops_url}>/common/fckeditor/fckeditor.js">
</script>
</script>
<script type="text/javascript">
function fckeditor_exec(width, height, url) {
        var area_width = width;
        var area_height = height;
        var xoops_url = url;
        var oFCKeditor = new FCKeditor( "content", area_width, area_height, "Default" );
        oFCKeditor.BasePath = xoops_url + "/common/fckeditor/";
        oFCKeditor.ReplaceTextarea();
}
</script>

を追加し

<{xoops_dhtmltarea type=text name=content value=$actionForm->get('content') rows=20 cols=60}>

<textarea id="content" name="content"><{$actionForm->get('content')}></textarea><script>fc
keditor_exec("100%", "350", "<{$xoops_url}>");</script><br />

に変更

fck.png

メインメニューの項目の非表示

モジュールの管理 で並び順を「0」にすると非表示になる

xoops _trust_pathとは

ドキュメントルート以外のxoops _trust_pathを指定することでセキュリティ強化ができるようだ。D3モジュールで使用する指定は

mainfile.php

    // XOOPS Trusted Path
    // This is option. If you need this path, input value. The trusted path
    // should be a safety directory which web browsers can't access directly.
//    define('XOOPS_TRUST_PATH', '');
    define('XOOPS_TRUST_PATH', '/home/okada/xoops_trust');

その他モジュールはhtmlはXOOPSインストールディレクトリでそこからのパスが示されているのでそのとおりのパスでインストールすればOK

カスタムブロックでタイトルを非表示にする

xoops/themes/(使用テーマディレクトリ)/theme.html

<!-- Start left blocks loop -->
<{foreach item=block from=$xoops_lblocks}>

<{if !ereg("^nodisp$", $block.title)}>   <==追加
<div class="leftblockTitle"><{$block.title}></div>
<{/if}>                                  <==追加

同様に、のこり4箇所にある<div class="leftblockTitle"><{$block.title}></div>をifでくくる。

タイトルにnodispというキーワードで表示されなくなる

ただしsmartyなので、templates_cに作成済みtemplatesがあるときはそれを削除しないと新しいページが表示しないので注意

piCal(カレンダー)

$ unzip piCal-0.9.zip

modulesとcommonディレクトリが解凍されるので

$ mv modules/piCal (xoopsディレクトリ)/modules

$ mv common/jscalendar (xoopsディレクトリ)/common

(xoopsディレクトリ)/commonがない場合は作成

xoops上で

管理メニュー -> モジュールのインストール -> ブロックのインストール

を行う。管理は「ブロックの管理で行う」

ワーニングが出たら
piCal/language/japanese/admin.phpの最後の数行コメントアウト

// groupperm
define("_MD_AM_DBUPDATED","データベースを更新しました");
//define('_MD_AM_PERMADDNG', 'グループ・パーミッションの追加に失敗しました(パーミッション名:%s 対象アイテム:%s 対象グループ:%s)');
//define('_MD_AM_PERMADDOK','グループ・パーミッションを追加しました(パーミッション名:%s対象アイテム:%s 対象グループ:%s)');
//define('_MD_AM_PERMRESETNG','「%s」モジュールのグループ・パーミッション設定の初期化に失敗しました');
//define('_MD_AM_PERMADDNGP', 'このアイテムの上位アイテム全てにパーミッションを与える必要があります');

添付ファイル: filefunction.pico.php 46件 [詳細] filefck.png 172件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-04-12 (金) 23:02:26 (1775d)