ქართული კლავიატურის პრობლემები ვიზუალურ (WYSIWYG) რედაქტორში ალბათ უკვე იცით, რომ 2.1.x სერიიდან დაწყებული მომხმარებელს შეუძლია თავის პროფილიდან აირჩიოს, თუ როგორი სახის დაპოსტვის ფორმა გამოიყენოს ფორუმზე.
არის ორი ვარიანტი - ჩვეულებრივი ან ვიზუალური (Rich text editor, WYSIVYG Editor).
ვიზუალური რედაქტორი ბევრად უფრო სიმპატიურია, უხეშად რომ ვთქვათ, იგი ჩვეულებრივი ტექსტური რედაქტორია, სადაც ყველა ცვლილება სახეზეა - ფონტის შეცვლა, ფერები, სურათები და ა.შ...
მაგრამ სამწუხაროდ, ვიზუალური რედაქტორი ისეა აგებული, რომ მასში ჩვენი სკრიპტით ქართული კლავიატურის ჩასმა შეუძლებელია ანუ მომხმარებელი, რომელსაც თავისი პროფილიდან დაყენებული ექნება მთელს ფორუმზე ვიზუალური რედაქტორები, მათში ქართული ასოებით წერას ვერ შეძლებს (თუ რათქმაუნდა თავად არ არქვს სისტემაში დაყენებული ქართული უნიკოდი). მაგრამ ჩვენ უნდა ვიზრუნოთ იმაზე, რომ მომხმარებელმა ვიზუალურრედაქტორიანი ახალი თემის ფორმაში ახალი თემის სათაურისა და აღწერის ველებში მაინც შეძლოს
ქართულად წერა.
ამისათვის შევდივართ აქ:
ACP -> LOOK & FEEL -> სკინის მენიუ -> Edit Template HTML -> Post / PM Editor -> editor_rte და გამოსულ კოდს სულ თავში ვუმატებთ
ამას:
Code
<input TYPE="CHECKBOX" checked NAME="geo" style="display:none">
კოდირება ფორუმის მსუბუქ, Lo-Fi ვერსიაში
როგორც მოგეხსენებათ, IPB ფორუმს აქვს მსუბუქი, Lo-Fi ვერსიაც. იგი იმით განსხვავდება სრული ვერსიისაგან, რომ მინიმუმამდე არის დაყვანილი ფორუმის სხვადასხვა ელემენტები, გრაფიკა და დიზაინის ”პრიბამბასები”. (მასზე გადასასვლელი ბმული იხილე მიმაგრებულ სურათზე) იგი შეიქმნა იმათთვის, ვისაც ნელი ინტრენტეტი აქვს ან ტრაფიკში იხდის ფულს, და არაფერში ჭირდება ფორუმის მძიმე დიზაინი.
ამ ვერსიასვე იყენებენ სხვადასხვა საძბენი სისტემების რობოტები ფორუმის ინდექსირებისას, ასევე ტრაფიკის დაზოგვის თვალსაზრისით. ასე რომ, ძალიან მნიშვნელოვანია ის, რომ ჩვენი ფორუმი მსუბუქ ვერსიაშიც ისევე სწორად იკითხებოდეს, როგორც სრულში.
მსუბუქ ვერსიას ისევ მონაცემთა ბაზასთან აქვს პრობლემა - კერძოდ კი, იგი უნიკოდს ბაზიდან არასწორად იღებს. ამ პრობლემის აღმოსაფხვრელად ვხსნით სერვერზე ფაილს
ROOT_DIR/lofiversion/index.php და მასში ვპოულობთ ამ კოდს
Code
$ipsclass->init_db_connection();
მის შემდეგ კი ვამატებთ ამას:
Code
mysql_query('SET CHARACTER SET utf8');
ქართული სათაურების შეკვეცა მთავარ გვერდზე
მოკლედ, რაშია საქმე:
ფორუმის თავფურცელზე, განყოფილებების ჩამონათვლის გასწვრივ მოცემულია ამ განყოფილებაში ბოლო პოსტის ავტორი და თემა, რომელშიც დაიწერა ეს პოსტი. რადგანაც თემის სათაური შეიძლება იყოს დიდი და დიზაინი არიოს, ამიტომ IPB თავფურცელზე გამოტანისას თემის სახელს კვეცს რაღაც გარკვეული რაოდენობის სიმბოლოზე (ვთქვათ, 30-ზე).
ეს მშვენივრად მუშაობს ინგლისურ სახელწოდებებზე, მაგრამ როდესაც თემას სახელი ჰქვია ქართული ასოებით, აქ ჩნდება ის პრობლემა, რაც დღეს თითქმის ყველა ქართულ ფორუმზეა. ანუ, ერთ ქართულ უნიკოდურ სიმბოლოს php აღიქვამს როგორც რამოდენიმე (თუ არ ვცდები 3) ჩვეულებრივ სიმბოლოდ, ამიტომაც ფუნქცია შეკვეცისას ერთ ქართულ სიმბოლოს ხლეჩს ხოლმე (ამ დროს მას ჰგონია, რომ 3 სიმბოლოს ჰყოფს) და შედეგად ვიღებთ გახლეჩილი სიბოლოს ნახევარს - რომელიც ბრაუზერისთვის გაუგებარია და გამოაქვს გაუგებარი აღნიშვნები.
ამის გამოსასწორებლად ვხსნით ფაილს ROOT_DIR/sources/classes/class_forums.php და ვპოულობთ მასში ამ კოდს (ხაზი 735):
Code
$forum_data['last_title'] = $this->ipsclass->txt_truncate($forum_data['last_title'], 30);
ვშლით მას და მის ადგილზე ვწერთ ამ პატარა მოდს (By Rocko)
Code
//--------------------------
// GeoTruncate Mod [START]
//--------------------------
$title_array = explode (" ", $forum_data['last_title']);
if (!(count ($title_array) < 4))
$title_array['3'] = "...";
else
$title_array['3'] = "";
$forum_data['last_title'] = "{$title_array['0']} {$title_array['1']} {$title_array['2']} {$title_array['3']}";
//-------------------------
// GeoTruncate Mod [END]
//-------------------------
მორჩა!
ეხლა რას მივიღებთ შედეგად:
აქ მთავარი ცვლადი არის $forum_data['last_title'], რომლითაც გამოდის შეკვეცილი სათაური და რომელშიც თავიდან სრული სათაურია შენახული.
ამ სკრიპტით კი კეთდება შემდეგი რამ: ეს სათაური იხლიჩება სიტყვებად ” ”-ის (space-ის) მიხედვით. ყოველი ნაწილი (ანუ სიტყვა) გადაეცემა მასივს
$title_array. შემდეგ ვამოწმებთ, თუ ამ მასივში ელემენტების (ანუ სიტყვების) რაოდენობა მეტია 3-ზე, ამ შემთხვევაში მასივის მესამე ელემენტს (ანუ მეოთხე
სიტყვას) ვანიჭებთ მნიშვნელობას ”...”, ხოლო თუ სიტყვების რაოდენობა 3 ან სამზე ნაკლებია, მაშინ ამ მესამე მნიშვნელობას (რომელიც არც არსებობს) ვანიჭებთ ცარიელ
სტრინგს.
და ეხლა კი საბოლოოდ ვაწყობთ შეკვეცილ სათაურს: ვალაგებთ მიყოლებით პირველ, მეორე, მესამე და მეოთხე ელემენტს ამ მასივისა (მეოთხე ელემენტი იქნება ”...” თუ
სათაური ბოლომდე არ ჩაეტია, ხოლო თუ სათაურში 3 სიტყვაზე მეტი არ ყოფილა და მისი მთლიანად გამოტანა მოხდა, მეოთხე ელემენტი არაფერს არ გამოიტანს).
კოდირების ჩასმა ACP-ს ფრეიმში
ACP-ში, სკინის რედაქტირების ერთ-ერთ ფრეიმში გვერდის კოდირება მითითებული არ არის, ასერომ მასში შეყვანილი ქართული უნიკოდური ტექსტი შესაძლოა ბაზაში არასწორად ჩაიწეროს.
ვხსნით სერვერზე ფაილს ROOT_DIR/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_global.php და ვპოულობთ მასში ამ კოდს
და მის შემდეგ ვამატებთ ამას:
Code
<meta http-equiv="content-type" content="text/html; charset={$this->ipsclass->vars['gb_char_set']}" />
ქართული კლავიატურა პოსტის სწრაფი რედაქტირებისას
ალბათ ყველამ უკვე ნახეთ, რომ დაემატა ახალი ფუნქცია - პოსტის სწრაფი რედაქტირება - რომელიც საშუალებას იძლევა უახლესი ტექნოლოგია AJAX-ის გამოყენებით
პოსტის ჩასწორება მოხდეს იქვე, გვერდიდან წაუსვლელად.
მაგრამ ეხლახანს შევნიშნე, რომ ამ ფუნქციის ფორმაში ქართული კლავიატურა ჯერ არ გაგვიკეთებია.
ხოდა, ამიტომაც აქაც ჩავრთოთ მშობლიური ენის მხარდაჭერა.
შევდივართ აქ: ACP -> LOOK & FEEL -> სკინის მენიუ -> Edit Template HTML -> Post Screen -> inline_edit_quick_box და ვპოულობთ
ამ ადგილს კოდში:
Code
<textarea style='margin:0px;padding:4px;width:98%' name='Post' tabindex='1' id='{$pid}_textarea'
class='rte-iframe' cols='80' rows='15'>{$post}</textarea>
მის მაგივრად კი ვწერთ ამას:
Code
<textarea onKeyPress='changeVal()' style='margin:0px;padding:4px;width:98%' name='Post' tabindex='1'
id='{$pid}_textarea' class='rte-iframe' cols='80' rows='15'>{$post}</textarea>
ალბათ შეამჩნევდით, რომ ესეც იგივე ჯავასკრიპტ-ფუნქციას იყენებს, რომელსაც სხვა ფორმები და, შესაბამისად, ამ ფუნქციის ასამუშავებლად გვერდზე უნდა იყოს თოლია geo. ამიტომაც, დახურულ თემებში პოსტის რედაქტირებისას ქართული კლავიატურა არ იმუშავებს. მაგრამ ეგ არაფერი, თუ მაინცდამაინც დახურულ თემაში მოგინდა პოსტის ჩასწორება, ინგლისურად დაწერ ან სხვაგან აკრიფავ ქართულად და მერე აქ დააკოპირებ.
ფორუმის წესები და პირობები ქართულად
მოკლედ, რაშია საქმე:
IPB 2.0.4-ში ენის ფაილში lang_registrer.php ისევე როგორც წინა ვერსიებში კვლავ არის ცვლადი, რომელიც შეიცავს ამ წესებს და პირობებს (რომელიც რეგისტრაციის დროს გამოდის ხოლმე და გვანიშნინებს ”ვეთანხმები”-ო-ს ). მაგრამ საქმე იმაშია, რომ რატომღაც ეს ვერსია პირობების გამოტანისას ტექსტს ამ ცვლადიდან კი არ იღებს, არამედ მონაცემთა ბაზაში შენახული ტექსტიდან (ipb_conf_settings: conf_default WHERE conf_id=5). ხოლო მაშინ, როდესაც ფორუმის გაქართულება გინდა გამოდის, რომ ერთადერთი გამოსავალი ამ ტექსტის შეცვლისა არის მისი ბაზაში ჩასწორება, მაგრამ ჩემი აზრით ჯობია ისევ კოდში ჩავასწოროთ რაღაცეები და ძველებურად ენის ფაილიდან გამოქონდეს ტექსტი, რათა გადასატანადაც უფრო ადვილი იყოს, ყველაფრის (ყველა თარგმანის) ერთად გადატანა.
მოკლედ, სერვერზე ვხსნით ფაილს ROOT_DIR/sources/action_public/register.php და მასში ვპოულობთ ამ ხაზს (1123):
Code
$text = $cache['conf_value'] ? $cache['conf_value'] : $cache['conf_default'];
და ვანაცვლებთ მას ამით:
Code
$text = $this->ipsclass->lang['click_wrap'];
მორჩა
აწი პირობების ტექსტის გამოტანა მოხდება ფაილიდან lang_register.php (ცვლადი $lang['click_wrap']).