Author Archives: vincent

XOOPS 模組內使用 javascript

XOOPS 這個 CMS (Content Management System) 已經風行好久了,最近才有機會仔細的評估一下,感覺上比 MamboJoomla 更有彈性,官方網站也點出未來的方向是朝向 Framework 發展。在專案裡用來作後台應該不錯,每個客戶要求的功能以 module 方式開發,速度快、程式碼也容易維護。

由於現在客戶的胃口都被養大了,要求的功能常常要用到 AJAX,以常見的 Yahoo UI 為例,這是一個 javascript base 的 framework,如何整合在一起的確是花了點時間研究。

首先我們要解決如何崁入我們的 css 及 js 檔,我們以預設的 theme 為例:

在 themes/default/theme.html 裡有以下2行

<!– customized header contents –>
<{$xoops_module_header}>

我們可以利用第2行的 smarty 樣板引擎變數加入我們所需要的 css 及 javascript 檔,以下是個簡單的範例

<?php
require(‘../../mainfile.php’);
require(XOOPS_ROOT_PATH.’/header.php’);


$xoops_module_header=<<<HEADER
<!– datatable includes below –>
<link rel=”stylesheet” type=”text/css” href=”js/yui/build/datatable/assets/skins/sam/datatable.css”>
<script src=”js/yui/build/yahoo-dom-event/yahoo-dom-event.js”></script>
<script src=”js/yui/build/element/element-beta-min.js”></script>
<script src=”js/yui/build/datasource/datasource-beta-min.js”></script>
<script src=”js/yui/build/datatable/datatable-beta-min.js”></script>
<!– loading panel includes below –>
<link rel=”stylesheet” type=”text/css” href=”js/yui/build/container/assets/container.css”>
<script src=”js/yui/build/utilities/utilities.js”></script>
<script src=”js/yui/build/container/container.js”></script>
<!– connection manager includes below –>
<script src=”js/yui/build/yahoo/yahoo-min.js”></script>
<script src=”js/yui/build/event/event-min.js”></script>
<script src=”js/yui/build/connection/connection-min.js”></script>
<!— module javascript –>
<script src=”js/module.js”></script>
HEADER;


$xoopsTpl->assign(‘xoops_module_header’,$xoops_module_header);

$html=<<<HTML
<script language=”javascript”>
showDownloadCountHTML();
</script>
<h2>AJAX HTML output</h2>
<div id=”DownloadTableHTML”></div>
<h2>AJAX YUI datatable</h2>
<div id=”DownloadTableYUI”></div>
HTML;

echo $html;

require(XOOPS_ROOT_PATH.’/footer.php’);
?>

2008.2.15 加註:

最近在寫 admin 的模組,由於 admin 預設的樣板 header 大部份都是 hard code,要 customize 的話,如果 client 端是 Firefox ,這些 css、js 外部 include 檔放在 body 內的 script 也可以正常運作。如果要同時相容 Firefox、Internet Explorer 則要透過 DOM 動態將 css、js 載入放進 header,有機會再提供詳細的範例。

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Fedora 8 x64 VNC server 採用 XFCE Window manager 音效問題

我的經驗是啟用 VNC server 後,window manager 採用 XFCE,當要撥放音樂時,軟體顯示無權限存取音效 device。pulseaudio 套件已經移除了,/etc/security/console.perms.d/50-default.perms 已經指定 users 群組有音效 device,但是不知道為什麼沒有作用,必須手動 chmod 666 <音效 device>。應該是本機 KDE、Gnome 的 display manager 在用戶登入時已經透過 PAM 機制設定好 permission,Google 後找到了一個比較好的解決方法。

比較新的 linux distribution 都已經採用 HAL 和 ACL 來管理 device 了,我們也遵循這個趨勢。

首先啟用 ConsoleKit、haldaemon (建議同時啟用 avahi-daemon、messagebus ) 這幾個服務。/usr/bin/getfacl /dev/dsp 您會看到以下的輸出:

# file: dev/dsp
# owner: root
# group: root
user::rw-
user:gdm:rw-
group::rw-
mask::rw-
other::—

通常我們會希望1個 group 的 user 都可以存取音效 device,這時候只要在 /usr/share/hal/fdi/policy/20thirdparty 目錄加上1個 acl 設定檔如下:

>>> 90-grant-audio-devices-to-users.fdi <<<

<?xml version=”1.0″ encoding=”UTF-8″?>

<deviceinfo version=”0.2″>
<device>
<!– grant access to sound devices to group users.. so orca/a11y works –>
<match key=”info.capabilities” contains=”access_control”>
<match key=”info.capabilities” contains=”alsa”>
<append key=”access_control.grant_group” type=”strlist”>users</append>
</match>
<match key=”info.capabilities” contains=”oss”>
<append key=”access_control.grant_group” type=”strlist”>users</append>
</match>
</match>
</device>
</deviceinfo>

這個設定檔賦予 ‘users’ 用戶群組 alsa、oss 音效 device 讀寫權限,重新開機後再執行 /usr/bin/getfacl /dev/dsp 結果如下:

# file: dev/dsp
# owner: root
# group: root
user::rw-
user:gdm:rw-
group::rw-
group:users:rw-
mask::rw-
other::—
這時候再撥放音樂檔案就不會有 permission deny 的問題了。

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

PHP 程式開發的 Log framework

log4j 幾乎已經是 java 專案開發的標準配備了,在 pear 網站搜尋了一下,找到了一個 logging 的套件,安裝容易,整合也非常方便。

安裝部份:

Fedora 8 只要 ‘yum install php-pear-Log’ 就會自動安裝好所需的套件,Windows 或其他平台如果已經安裝好 PHP、PEAR 套件,應該只要 ‘pear install Log’ 就會自動下載並安裝好套件,windows 的 xampp 是這樣安裝好的。

Coding:

以下是一小段簡短的範例

<?php

require_once ‘Log.php’;

$logger=&Log::factory(‘file’,’myap.log’,’demo.php’);
$logger->log(‘application start’,PEAR_LOG_NOTICE);
$logger->log(‘application finished’,PEAR_LOG_NOTICE);

?>

寫進 myap.log 檔的 log 格式如下

Dec 26 01:11:22 demo.php [notice] application start
Dec 26 01:11:22 demo.php [notice] application finished

支援的 log level 包括

PEAR_LOG_EMERG

PEAR_LOG_ALERT

PEAR_LOG_CRIT

PEAR_LOG_ERR

PEAR_LOG_WARNING

PEAR_LOG_NOTICE

PEAR_LOG_INFO

PEAR_LOG_DEBUG

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Open Source 解決方案 IT 應用推薦 #1

這次要介紹的是 SystemRescueCd ,這片可開機 CD 包括下列的主要元件:

  • GParted
    這個工具可以調整 partition 大小、移動 partition、建立新的 partition,就像 windows 平台為人所熟知的 Partition Magic 一樣,個人用這個工具 resize Lenovo OEM 的 Vista partition 然後再裝上 Ubuntu linux 雙作業系統運作都沒有問題。
  • Partimage
    這個工具可以讓你備份整個 fat,fat32,ntfs 檔案系統,有問題時把備份出來的檔案倒回原 partition 跟備份前一模一樣,也可以開機。跟 Windows 平台的 Ghost 功能差不多,個人用在 Windows 2000 的備份與還原都沒有問題,Windows Vista on ntfs 確定可以備份,還沒有機會測試還原。
  • 各種檔案系統工具
    使用時機包括在安裝 linux distribution 前可以用這片 CD 把硬碟 partition 先規劃好,安裝光碟也有這個功能,看個人習慣,我怕資料受損都是先切好 partition 再安裝;有時候改錯了系統設定檔造成系統 boot 不起來,也可以用這片光碟開機,把系統 partition mount 起來,改好設定檔再 reboot 就好了;root filesystem 在運作時是無法進行 filesystem check 的,必要時可以利用這片 CD boot 起來,再 fsck root filesytem 的 partition 即可;這些功能通常 linux distribution CD 也會有,如果有什麼特殊情形不能用 distribution CD 的 rescue mode,可以試試這片 CD,支援的檔案系統種類相當完整。

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

FortiGate 60 設定自動更新 virus、IPS signature

步驟一、先到 Fortinet 網站註冊您的 FortiGate,會需要一些個人資訊及 FortiGate 背面的產品序號

步驟二、由 於 Fortinet 會將 signature push 到您的 FortiGate,所以我們必須要設定一個 firewall policy 允許 Fortinet 的伺服器連線到 FortiGate

2.1 建立一個定義連線的 virtual IP,如下圖

FortiGate 60 FDN push configuration image#1

2.2 建立允許連線的 firewall policy,如下圖

FortiGate 60 FDN push configuration image#2

這個設定是讓 FDN 把 signature push 到防火牆後面的 FortiGate,如果 FortiGate 直接連上 Internet ,只要打開 WAN 的 UDP 9443 port 即可

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 4.00 out of 5)
Loading...