2022年3月3日 星期四

SC - FORM 表單設計

 FORM Application有四種不同的形態:

  1. Single Record:一個頁面一筆紀錄
  2. Multiple Records:一個頁面同時多筆紀錄;前面可以有選取勾勾,同時做多筆更新或刪除
  3. Editable grid:以方格式表現多筆紀錄同時編輯;每筆紀錄前面可有刪除、更新、複製等按鈕
  4. Editable grid view:以方格式表現多筆紀錄,但先只是只讀,需要再按一次按鈕才能編輯。

* 做購物車 Cart 更新功能時,SC online Shop 範例Samples 裡面有兩種做法:
  • my_cart :是 Grid Application
  • form_cart:是 Form Editable Grid Application
最後程式是用 my_cart Grid 作法。
序號、品名、[-]按鈕、數量、[+]按鈕、單價、金額

[-][+]按鈕,是使用 Ajax onClick Event 程式執行 數量的增減

2022年3月2日 星期三

SC 欄位效果:sc_input_group

有趣的文章內容,參考:

https://medium.com/scriptcase-master/bootstrap-input-group-in-scriptcase-mastertip09-a20a9a7dca5


1. 我將 sc_input_group(),寫到 internal libraries 裡面,這樣可以共用。

2. 記得使用時,需要先將 ajax_error_output 設成 OFF ,在 application -> Setting 裡面

3. 如果是在 Form 的單一Record 時,在 Event onLoad 裡面,設:

$arr_fields = [

['login'    , 'text', 'R$', 'right'],

['email', 'text', '@gmail.com', 'right'],

['nick_name'    , 'icon', 'fas fa-at', 'right']

];

sc_input_group($arr_fields,null);

如果是 multi records From ,在 EVENT onLoadRecord


# Form with multiple lines example

$arr_fields = [

['field_name', 'text', 'R$', 'right'],

['field_name', 'text', '@gmail.com', 'right'],

['field_name', 'icon', 'fas fa-at', 'right'],

['field_name', 'icon', 'fas fa-phone', 'right'],

['field_name', 'icon', 'fas fa-phone', 'right']

];

sc_input_group($arr_fields, $sc_seq_vert);



2022年3月1日 星期二

ERROR: CONSTANT DS ALREADY DEFINED

Constant 重複定義了! 

找到這個指令:

define('DS', DIRECTORY_SEPARATOR);

修改成這樣就可以了:

if(!defined('DS')){ define('DS',DIRECTORY_SEPARATOR); }

MySQL sql_mode=only_full_group_by

MySQL 產生 sql_mode=only_full_group_by

這是我做一個 View 裡面有 GROUP BY

在我的 Local MySQL沒有問題,上傳到  Server 就有問題了。

這一定就是版本不同的緣故。

於是網路搜尋:

https://www.gushiciku.cn/pl/pFxA/zh-tw

https://www.twle.cn/c/yufei/mysqlfav/mysqlfav-basic-sql_mode2.html

修改了 Server 上面 /etc/my.cnf

sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

加上這段,重新啟動MySQL 就好了!

2022年1月15日 星期六

在 Centos 上安裝 Ghostscript ,這是 使用 PDF要用到的。

GhostScript:

https://www.ghostscript.com/index.html

下載:

https://www.ghostscript.com/releases/gsdnld.html

安裝:

在SSH終端上:

cd /usr/src

wget https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs9550/ghostscript-9.55.0.tar.gz

tar -xzvf ghostscript-9.55.0.tar.gz

cd ghostscript-9.55.0

./configure 

make

make install


在 使用 Imagick,使用 PDF 轉換 JPG,一直發生 Internal Error 500

經查了很久,才知道,Server必須安裝 PHP Imagick 以外,還有 GhostScript,這是一個 PDF 要用的免費程式。

我的主機上沒有,所以必須安裝起來。





在 PDF Report 裡面的  PDF Layout Code下面增加產生  PDF,轉 JPG 的程式

因為,我們不知道 SC產生的 PDF 檔案名稱,只好自己用自訂的PDF檔名來產生

然後,再由自己產生的 PDF 產生 JPG

$t_pdf_file = $_SERVER['DOCUMENT_ROOT']."/_lib/tmp/id_".{pay_form_id}."_pay_form.pdf";

$t_jpg_file = $_SERVER['DOCUMENT_ROOT']."/_lib/tmp/id_".{pay_form_id}."_pay_form.jpg";

$pdf->output($t_pdf_file,"F");

$im = new Imagick();

$im->setResolution(150, 150);

$im->readImage( $t_pdf_file );

$im->writeImages( $t_jpg_file, false );




** 還有 /domains/<websitename>.com/public_html/_lib/prod/third/wkhtmltopdf/linux-amd64/wkhtmltopdf-amd64 權限要設成 "777"




2022年1月11日 星期二

ScriptCase PDF 字型

 Scriptcase 的 PDF,如果使用預設字型,也就是在 PDF Application 的設定裡font 沒有設定字型,那麼,產生出來的結果,我的情形是在電腦上可以出現中文字型,但是在手機上,就沒有中文字型!

後來,試了很久,在 PDF Application 的設定裡字型改為其他字型,結果是中文字亂碼,試了幾個,以下是中文可以出現的:

  • kozminproregular
  • cid0jp
  • cid0ct
  • cid0kr
  • kozgopromedium
PDF的字型,是抓取機器上的字型,如果有特殊字型,需內嵌在PDF檔案裏面。
猜想,前面沒有設定字型,可能就是因為預設的字型,在手機上沒有,所以出現空白。
設定好字型以後,可能就內嵌在PDF檔案裡面了,可以正常顯示。

PDF手機字型顯示問題解決了!



2022年1月9日 星期日

ScriptCase 的 Application Field Type 是 Label / Text 使用

 ScriptCase 裡面的 Field Type

如果是設定為 Label,在 程式中,無法參照到值

必須設定為 Text,而底下的屬性設為 Label Field - Cannot be changed. 這樣程式才可以參照到值。


例如:一個 Control Application

兩個欄位:

{user}、{id}

如果 {id} 為  Label,則在程式中,{id}出來的是null

必須設 {id} 為 TEXT,底下的屬性設為 Label Field,這樣在程式中,{id}就可以抓到值了。

如何判斷現在FORM是在 insert mode? 還是 update mode?

只要用  if (empty({primary_key})) 就可以知道是否為新增模式了。 如果 {promary_key} 是空白的,那麼就是在新增模式;反之,就是更新模式。 以上。