ระบบ eDMS ถ้าจะตัดการเช็คไฟล์ upload
ระบบ eDMS ถ้าจะตัดการเช็คไฟล์ upload ว่าไม่ต้อง upload ไฟล์ก็บันทึกได้ นี่ต้องแก้ยังไงครับ
ผมลองทำที่ไฟล์ write.php โดยตัดบรรทัด 152-154 ออก ผลโปรแกรมให้บันทึกได้ แต่รายการเอกสารที่บันทึกเข้าไป ขึ้นเฉพาะที่หน้าสำหรับ "อัปโหลด" แต่หน้าแสดงหน้ารายการไม่ขึ้น ใน Database ก็บันทึกนะ ก็เลยอยากสอบถามว่าอันนี้ต้องทำตรงไหนอีกครับ
ผมลองทำที่ไฟล์ write.php โดยตัดบรรทัด 152-154 ออก ผลโปรแกรมให้บันทึกได้ แต่รายการเอกสารที่บันทึกเข้าไป ขึ้นเฉพาะที่หน้าสำหรับ "อัปโหลด" แต่หน้าแสดงหน้ารายการไม่ขึ้น ใน Database ก็บันทึกนะ ก็เลยอยากสอบถามว่าอันนี้ต้องทำตรงไหนอีกครับ
ก็ไปหาดูก่อนครับว่ามันหน้าไหน แล้วก็ไปจัดการกับ Query เอาส่วนที่อ่านไฟล์ออก ไม่แน่ใจเหมือนกันว่าจะต้องแก้ไขเยอะหรือเปล่า
ปล. eDms ไม่อัปโหลดไฟล์ แล้วจะให้ user มาทำอะไรในระบบหนอ
โดยผมเข้าไปแก้ที่ไฟล์ \modules\dms\model\write.php ตรงบรรทัดที่ 152-154 นี้เอาออกทั้งหมด ตามนี้
if ($index->id == 0 && empty($files)) {
// ใหม่ ไม่ได้เลือกไฟล์
$ret['ret_file'] = 'Please browse file';
ผลก็เป็นตามกระทู้ คือ บันทึกได้โดยไม่ต้องใส่ไฟล์ Download และ ก็เขียนลง Table edms_dms ได้ด้วย ซึ่งในหน้า อัปโหลด มีแต่หน้า รายการ ไม่ขึ้น ก็เลยขอสอบถามว่าต้องแก้ส่วนไหนอีกครับ
หรือเริ่มต้นดัดแปลงใหม่ (น่าจะง่ายกว่า)
มีการเปลี่ยนแปลงฐานข้อมูลอยู่ด้วย การดัดแปลงอาจต้องทำด้วยความระมัดระวัง สำคัญที่ต้องสำรองไฟล์และฐานข้อมูลไว้ก่อนเสมอครับ
รบกวนอีกข้อครับ ขอคำแนะนำถ้าจะค้นหาในส่วนของรายละเอียดเอกสารด้วย ต้องเพิ่มตรงไหนครับอาจารย์
ขอบคุณครับ
ส่วนการค้นหา เพิ่มที่บรรทัดนี้ https://github.com/...models/index.php#L70
https://github.com/...models/index.php#L73
ผมเพิ่มตามเฉพาะ A.detail เข้าไปใน Query ตามนี้ครับ
->select(Sql::IFNULL('F.id', 0, 'id'), 'A.id dms_id', 'A.create_date', 'A.document_no', 'A.detail', 'A.topic', 'F.topic file_name', 'F.ext', 'A.department', 'A.cabinet', 'W.downloads', 'A.url')
ผลก็คือ จะกลับไปหน้า Dashboard และ เข้ามาหน้ารายการไม่ได้อีกเลยครับ
ในส่วนการค้นหา
https://github.com/...models/index.php#L70
ผมก็เพิ่มในส่วนของ A.detail ตามนี้
$where[] = Sql::create("(A.`detail` LIKE '%$params[search]%' OR A.`document_no` LIKE '%$params[search]%' OR A.`topic` LIKE '%$params[search]%' OR F.`topic` LIKE '%$params[search]%')");
ผลก็คือ การค้นหาจะไม่ทำงานเลย ไม่ว่าจะพิมพ์ถูกหรือผิดอะไรลงไป หน้าจอก็จะอยู่ที่หน้าแสดงรายการทั้งหมดเหมือนเดิม
ขอคำแนะนำด้วยครับอาจารย์
** ที่แก้สองส่วนนี้ ทำคนละครั้งนะครับ ไม่ได้ทำพร้อมกัน **
error สามารถดูใน console ของบราวเซอร์ได้ หรือไม่ก็คลิกขวาเพื่อเปิดหน้าเว็บใน tab ใหม่ อาจจะเห็น error
โดยเพิ่ม A.detail เข้าไปใน query เป็นตัวแรก เท่านั้น ซึ่งผลก็เป็นตามที่แจ้ง คือ ออกจากหน้ารายการ ไปหน้า dashboard แล้วกลับเข้ามาไม่ได้อีก อยากให้อาจารย์ช่วยเขียนให้ดูได้ไหมครับ ผมทำไม่ได้แล้วจริงๆ ยินดีครับถ้าต้องมีค่าใช้จ่ายเพิ่มเติม
สิ่งที่ต้องการทำน่ะครับ
- ดึงส่วน detail ของตาราง edms_dms ออกมาแสดง
- ให้ค้นหาจากส่วน detail นี้ได้ด้วย
ขอบคุณครับ
ลองเพิ่ม A.detail ลงในบรรทัด 44 ดูครับ ต่อจาก A.topic เนื่องจาก A.detail ไม่ได้เอาออกมาตั้งแต่ subquery
ได้แล้วครับ ผมตกบรรทัดนี้ไปได้ๆไง ก็ลองใส่ไปหลายที่แล้วก็ไม่ได้ ผมขอสนับสนุนเวปไซต์ไปเพิ่มเติมแล้วนะครับ ขอบคุณมากครับ
ขอบคุณมากครับ
1. ถ้าจะกำหนดความกว้างของคอลัมน์ในหน้ารายการ เพื่อตัดคำที่ยาวๆออก อย่างเช่น ชื่อเรื่อง หรือ พวก detail ที่มันยาวๆ แบบไม่ต้องแสดงทั้งหมด ต้องทำตรงไหนครับ ใน Style.css ก็หาไม่เจอ ขอคำแนะนำด้วยครับ
2. พอดีผมได้สร้างคอลัมน์เพิ่มเติมในตาราง edms_dms เพื่อเพิ่มรายละเอียดของเนื้อหามา 2-3 คอลัมน์ พอเป็นแบบนี้แล้ว ผมก็ต้องสร้าง Drop down เพื่อเลือกที่จะค้นหาตามเฉพาะ คอลัมน์นั้นๆ อย่างเช่น ชื่อเรื่อง, detail และ คอลัมน์ที่สร้างขึ้นมาใหม่ ขอคำแนะนำโค้ด หรือตัวอย่างได้ไหมครับ
ขอบคุณครับ
2. ตัวอย่างมีอยู่แล้วในโค้ดครับ ทำเหมือนกันกับ select ตัวอื่นๆเลย (แนะนำให้ก๊อบโค้ด select มาใช้เลย)
ข้อ 1. ขออาจารย์ทำเป็นตัวอย่างสักหนึ่งคอลัมน์ได้ไหมครับ อย่างเช่น แถวชื่อเรื่อง ผมไม่รู้จริงๆว่าต้องไปเขียนตรงไหนยังไง ลองดูแล้วไม่ไหวจริงๆครับ.
ขอบคุณครับ
'text' => '{LNG_Document title}',
'class' => 'cuttext'
),
อันนี้ลองแล้วไม่ได้ครับอาจารย์ไม่มีผลอะไร ผมได้ลองหลายแบบแล้วก็ไม่ได้ ขอตัวอย่างเป็นวิทยาทานได้ไหมครับอาจารย์
ขอบคุณครับ.
ลองศึกษาอันนี้เพิ่มเติม
https://goragod.com/...A7%E0%B8%A2_css.html
หรือจะใช้วิธีตัดสตริงค์ด้วย PHP แทนก็ได้นะ แต่มันจะไม่ค่อยยืดหยุ่น
ส่วนตัว ผมจะไม่แสดงข้อความอะไรลงในตารางที่มันยาว เพราะมันควบคุมค่อนข้างยาก
ทำไม่ได้แล้วจริงๆ
ขอบคุณครับ.
สิ่งที่พอบอกได้ คือใช้ความรู้ CSS ในการแก้ปัญหาครับ เช่น ใส่ class ลงในจุดที่ต้องการ (เหมือนกับที่ให้เพิ่ม cuttext) แล้วเขียน CSS เพิ่มเพื่อระบุไปยังจุดที่ต้องการจุดเดียว โดยใช้ CSS ตามบทความ (เขียนอีกที ผมก็เขียนเหมือนในบทความแหละ)
หมายเหตุ อาจต้องดำเนินการหลายอย่างเพื่อให้บรรลุผล ผมเลยไม่สามารถเขียนตัวอย่างให้ได้ แนะนำให้ทำความเข้าใจกับโค้ด แล้วนำไปประยุกต์ใช้เอา
สืบเนื่องจากคำถาม ข้อที่ 2. ผมก็ได้ลองทำตามอาจารย์แนะนำแล้วยังไม่เป็นผล คงเป็นเพราะที่ผมเอา select มาไม่ถูกอัน หรือ วางไม่ถูกที่ ขอความกรุณาอาจารย์ช่วยเหลืออีกนิดนะครับ ไม่รู้จะเอาอะไร ไปวางตรงไหน ถึงจะถูก เหลืออีกนิดก็จะสำเร็จแล้วครับ ขอบคุณมากครับ.
2. ถ้าหมายถึงจะค้นหาเฉพาะคอลัมน์ที่เลือกด้วยตัวเอง (มีตัวเลือกคอลัมน์ที่จะค้นหา และช่อง search) ถามว่าทำได้หรือไม่ คำตอบคือได้ แต่อาจจะยุ่งยากมากๆเลย หลักการก็คือ สร้าง filter (ตัวเลือกที่ส่วนหัวของตาราง) ตามปกติ และทำการรับค่าตัวเลือกมา แล้วส่งให้ Model ไปเขียน Query เพิ่มเติมเอา
headers หมายถึงส่วนหัวของตาราง (th) สามารถระบุ class หรือ css ได้เหมือนการระบุใน HTML ถ้าไม่มีก็เขียนเพิ่มเอา (มีตัวอย่างมากมายอยู่ในโค้ด)
https://github.com/.../views/files.php#L86
cols หมายถึงส่วน td ของตาราง สามารถทำได้เหมือนกัน
ส่วนข้อ 2 สร้างฟิลเตอร์เหมือนอันนี้
https://github.com/.../views/files.php#L86
เขียนคำสั่งรับค่าแล้วส่งไปที่ Model
https://github.com/...views/member.php#L51
ที่ Model ก็เขียน Query ที่ต้องการเอา
- ขออีกหนึ่งคำถามครับ ว่าตรงไหนที่เป็นตัวกำหนดความกว้างของคอลัมน์ในแต่ละคอลัมน์ครับ
ขอบคุณมากครับ.
ปกติแล้วไม่มีครับ ถ้าอยากจะกำหนดให้ใช้ CSS ในการจัดการ เช่น
1. ใส่ class ให้กับ header ของตาราง
2. เขียน CSS กำหนดความกว้างให้ class ซึ่งโดยปกติระบบจะมี width10 width20 - width90 และ fullwidth ให้ใช้
- ขอคำแนะนำครับอาจารย์ ถ้าผมจะเอาชื่อแผนกของเอกสารนั้นๆ ไปแสดงในหน้าป๊อบอัพของปุ่มรายละเอียด (view.php) ต้องทำยังไงครับ พอดีลองมาหลายวิธีก็ไม่ได้ผลครับ
ขอบคุณครับ.
ขอบคุณครับ
ไม่เข้าใจคำถามครับ
https://github.com/...views/setup.php#L130
หรือ
https://github.com/...iews/member.php#L105 (หน้ารายชื่อสมาชิก)
ลองเขียนคำสั่ง CSS ลงใน skin/defult/style.css ดู
color: red;
}
ลองเขียนลงไปกับทุกไฟล์ css ในโปรเจคแล้ว ไม่มีผลอะไรเลยครับอาจารย์ จุดประสงค์ก็คล้ายกับที่อาจารย์ยกตัวอย่างมา 2 ไฟล์นั้น คือ จะไปหาจุดที่โค๊ดนั้นอ้างอิงไปหา อย่างเช่น 'class' => 'center', นี่คือ ไปเรียกหา class ของ css ที่ชื่อ center ใช่ไหมครับ ผมก็จะไปหาไฟล์ css ที่มี class นี้ เพื่อเขียนเพิ่มเติมแต่หาไม่เจอ และ ลองเขียนลงไปตรงๆที่ไฟล์ php เลย อย่างเช่น <?echo "<head><link rel="stylesheet" href="yearpicker.css"></head>" ?> ตามที่เค้าแนะนำมา ก็ไม่ได้น่ะครับอาจารย์ มีวิธีอื่นอีกไหมครับ
ขอบคุณครับ.
ทำตามกฏของ CSS เลยครับ ไม่ต้องไปหาต้นทางว่ามันอยู่ที่ไหน สามารถเขียนใหม่ที่ท้ายๆไฟล์ได้เลย
เรียนอาจารย์ เรื่อง css ผมทำได้แล้วครับ ขอบคุณมากครับ แต่เรื่องที่ให้ Join ข้อมูล เพื่อดึงข้อมูลของแผนก มาแสดงในหน้ารายละเอียดของเอกสาร (icon สีเหลือง) ผมได้ลอง Join หลายๆแบบแล้วไม่มาเลยครับ พยายามมาหลายวันทั้งลองศึกษาคำสั่ง sql ดูในหลายๆที่ก็ทำไม่ได้ ผมไม่สามารถจริงๆ ขอรบกวนอาจารย์แสดงให้ดูได้ไหมครับ
ขอบคุณครับ.
อาจารย์ครับผมได้ลองทำแล้ว แต่ตรง department มันจะมาแค่แผนกเดียว ถ้าเอกสารตัวนั้นอยู่มากกว่า 1 แผนก มันจะเอามาแสดงได้แค่แผนกเดียวตามโค๊ดด้านล่างนี้ (ไฟล์ ../dms/models/view.php บรรทัด 32-37) รบกวนอาจารย์ช่วยแนะนำด้วยนะครับ ขอบคุณครับ.
return static::createQuery()
->from('dms A')
->join('dms_meta N', 'LEFT', array('N.dms_id', 'A.id'))
->join('category C', 'LEFT', array(array('C.category_id', 'N.value'), array('C.type', 'N.type')))
->where(array('A.id', $id))
->first('A.id', 'A.document_no', 'A.topic', 'A.member_id', 'A.create_date', 'A.detail', 'A.url', 'A.agency', 'A.author', 'A.syear', 'A.subagen', 'A.group', 'C.topic dept');
อาจารย์ครับ คือ หมายถึงเอาโค๊ดจากไฟล์ write.php ตั้งแต่บรรทัดที่ 37-63 ไปวางแทนโค๊ดของไฟล์ view.php ตั้งแต่บรรทัดที่ 32-36 เลยหรือเปล่าครับ ลองทำแล้ว พอคลิกตรงรายละเอียดแล้วจะนิ่งไม่ไปไหนเลย รบกวนอาจารย์ช่วยหน่อยนะครับ ผมไม่รู้จริงๆว่าต้องวางโค๊ดยังไงให้มันแสดงแผนกได้ ลองหลายรูปแบบแล้วก็นิ่งสนิท ขอบคุณครับ
จริงๆจะทำได้ก็ต้องอาศัยเข้าใจวิธีการ Query ข้อมูล รวมถึงเข้าใจการทำงานของโค้ดก่อนครับ ซึ่งถ้าเข้าใจหลักการมันก็จะง่ายขึ้น
สิ่งที่ต้องทำจริงๆ เพื่อเอาแผนกออกมาคือการ JOIN แผนกเข้าไปยังตารางหลัก แต่เนื่องจาก หมวดหมู่มีได้หลายอัน เลยต้องใช้ GROUP_CONCAT ช่วยในการเอาข้อมูลออกมา
ซึ่งตัวอย่างวิธีใช้คำสั่งมีอยู่ในลิงค์ที่ส่งไป