GeoKBD 0.3.1 – მორიგი გაუმჯობესებები

პირველ რიგში დიდი მადლობა სკრიპტის მომხმარებლებს აღმოჩენილი პრობლემებისა და გაუმჯობესებების შემოთავაზებისათვის!

ეს მცირე განახლება მოიცავს შემდეგ გაუმჯობესებებს:

დაიხვეწა GeoKBD.map() მეთოდის გამოყენების მექანიზმი და აგრეთვე გაფართოვდა მისი შესაძლებლობი.

  • ამ მეთოდის გამოყენება შეიძლება უპარამეტროდ, კერძოდ კი თუ მას არ გადავცემთ არცერთ პარამეტრს, კლავიატურის მიბმა მოხდება დოკუმენტში არსებული ყველა ფორმის ყველა ტექსტურ ველზე. ამის მისაღწევად საკმარისია შემდეგი კონსტრუქცია:
        GeoKBD.map();
    
  • მეთოდს პირველ პარამეტრად შეგვიძლია გადავცეთ არა უბრალოდ ფორმის სახელი სტრიქონის მეშვეობით, არამედ ფორმის დასახელებების მასივი:
        GeoKBD.map(['my_form_1', 'my_form_2']);
    

    ეს შესაძლებლობა თავიდან აგვარიდებს დამატებითი კოდის წერის აუცილებლობას, რადგან ზემოთ ნაჩვენები შედეგის მისაღწევად აქამდე საჭირო იყო მსგავსი კონსტრუქციის გამოყენება:

        GeoKBD.map('my_form_1');
        GeoKBD.map('my_form_2');
    
  • დაიფიქსა შეცდომა როდესაც პარამეტრად გადაცემული ფორმის არ არსებობის შემთხვევაში სკრიპტი აგდებდა შეცდომებს;
  • დაიფიქსა WYSIWYG რედაქტორებზე მიბმის დროს აღმოჩენილი შეცდომა Alt და Ctrl კლავიშებთან დაკავშირებით. ამჯერად ეს კლავიშები მუშაობს;

ამ შეცდომების აღმოჩენისათვის განასკუთრებულ მადლობას ვუხდი Rocko – ს და ლევანჩოს :)

ტეგები:

42 Responses to “GeoKBD 0.3.1 – მორიგი გაუმჯობესებები”

  1. Newton says:

    მშვენიერია, მაგრამ ‘my-field’სად გაქრა?
    ‘my-field’-იც აუცილებელია,რადგან ფორმაში ზოგან არის ველი სადაც არ უნდა მუშაობდეს კლავიატურის გადამრთველი, მაგალითად login , password, …

  2. levani says:

    soso,tinimce pluginshi mchirdeba ro G gilaki davpreso roca qartulia chartuli, danarcheni kvelaferi mushaobs.

    daamate api metodi ro gavigo chartulia tu ara qartuli , magalitad ase GeoKBD.activeLangISO()

    ISO Code jobia ka/en daabruno rom extendebuli ikos momavlistvis da sxva langugebshic gamodges (ravici tu magaze fiqrob :)

    an ubralod daabrunos boolean cvladi,
    exla ashenishvnebi :

    (avtomaturad chartuli rom aris qagarTuleba instanciaciis mere, iqneba gaaumjobeso ro archevani qondes developers instanciaciis dros unda tu ara ro ikos avtomaturad chartuli, iqneba defaultad ar minda ro ikos gaqartuleba chartuli9an monishnuli tu chekboqsia) .

    me davamate cvladi ro trakingi gauketos ka states, magram kagi ikneboda ro chota kodi shecvalo da shidan obieqtis cvladi gqondes romelic traking gauketebs romelia chartuli, anu globaluri ikos rogorc mapIFrame aseve kvela sxva metodistvis romelic amocmebs 96 gilaks. anu romelic idzaxebs translateToKA

    exla samsaxurshi var da tinis dasatestad davamate droebiti varianit, uketesi ikneba tu kodis ise secvli rom nativad gauketos traking, var doc is magivrad rame cota ufro globaluri cvladi ro ikos kargi ikneba albat,

    179 davamate : activeLangISO:true,

    ————————

    218: davamate :

    if (doc.ka) {
        var kaText = text.translateToKA();
        if (kaText != text) {
            if (!GeoKBD.browser.isIe) {
                doc.execCommand('InsertHTML', false, kaText);
        } else {
            var range = doc.selection.createRange();
            range.pasteHTML(kaText);
        }
        GeoKBD.event.cancel(e);
        }
    }
    GeoKBD.activeLangISO=(doc.ka?true:false);
    

    ————-

    158 xaszze : shevcvale :

    if (!this.ka) 	 return;
    

    ——- amit

    if (!this.ka) {
        GeoKBD.activeLangISO=false; return;
    } else {
        GeoKBD.activeLangISO=true;
    }
    

    martalia cvaldi ar abrunebs iso mara ammomentisvis egec mkofa gilakis dasatestad.
    }

  3. Newton

    არა შენს ფორუმზე ნამდვილად არაფერი გამიტესტავს :D

    ველები პარამეტრებად შეგიძლია გადასცე ფორმას… არსად არ წასულა ეგ პარამეტრი… თუ აქვს ფორმას ეგეთი ველი გააქართულებს თუ არადა დაიკიდებს…

    GeoKBD.map(null, ['my-field1', 'my-field-2']); //მაგალითად ასე…

    levani

    ჩავუჯდები შენს საჯეშენს უფრო საფუძვლიანად :D დიდი მადლობა რომ ასე დაიხარჯე :)

  4. levani says:

    soso yvelaferi mushaobs magram ` shortkats ver vikeneb, geokbd acencelebs events memgoni ar vici magram karoche tinimde ar midis, amitom vcade sxva shortkati da mushaobs magalitadn ctrl+m ze an ctrl+g da ase shemdeg, mokled am kods saxlshi cavigeb da iq gavasuftaveb

    xo martka kide erti api metodi tu sheidzleba :
    geoKbdInst.toggleActive(‘ka’);

    an geoKbdInst.toggleActive(true);

  5. კი შეიძლება როგორ არა ოღონდ უნდა ჩავუჯდე ლევან, ახლა ამ წამს არც თავი მაქვს მაგისი და არც ნერვები და ხვალამდე ხომ შეიძლება გადადება? :) :)

  6. levani says:

    da vafshe ufro uketes variants shemogtavazeb, kvelaze verni d martebuli ikneba ro dispatch gauketo custom events rodesac chamrtveli sheicvleba da parametrad gadace actiuri ena amjabad anda enis iso codi daaxloebit ase (psevdo)
    geokbd.dispatchMyCustomEvent(“mycustomEvent”,”ka”);

    rac sheexeba moclas roca moicli mashi no problem

  7. levani says:

    ufroscored :

    geokbd.dispatchMyCustomEvent(”langToggleChangeEvent”,”ka”);

  8. ლევან,

    ასეთი მეთოდი დავამატე, რომელსაც შემდეგი სიგნატურა აქვს:

    GeoKBD.addKehHandler(key, callback);
    

    ესე იგი საჭიროების შემთხვევაში, შეგიძლია გადასცე კლავიშის კოდი პირდაპირ, ან უბრალოდ ნებისმიერი სიმბოლო შესაბამის ქოლბექ პარამეტრთან ერთად. თუ მოხდება იმ კლავიშზე დაჭერა ავტომატურად გამოხდება ქოლბექის შესრულება…

    ქოლბექი შეგიძლია ორი ტიპის გადასცე:
    1) ჩვეულებრივი ფუნქცია.

    GeoKBD.addKeyHandler("`", function(key) {alert('test')});
    //ან ნებისმიერი ფუნქციის სახელის გადაცემაც შეიძლება პირდაპირ
    

    2) მასივი რომლის პირველი პარამეტრიც არის ობიექტი(ანუ კონტექსტი) და ობიექტის მეთოდი:

    GeoKBD.addKeyHandler("`", [myEditorInstance, 'instaceMethod']);
    

    ასეთ შემთხვევაში როდესაც მოხდება ქოლბექის შესრულება, იგი აუცილებლად შესრულდება myEditorInstance ობიექტის კონტექსტში და this მითითება ამ ობიექტზე იქნება. რაც ნიშნავს იმას რომ კონტექსტი არ დაიკარგება და უბრალოდ ფუნქციის გამოძახება არ მოხდება.

    ან აქ დაწერე ან მესინჯერში რომ გამოჩნდები მითხარი აზრი. რომ საბოლოოდ გადავწყვიტო დავტოვო თუ არა. ჯერ რეპოზიტორიში არ ჩამიდვია, მაგრამ გავტესტე ლოკალურად და კაცურად მუშაობს.

  9. Rocko says:

    დაიფიქსა შეცდომა როდესაც პარამეტრად გადაცემული ფორმის არ არსებობის შემთხვევაში სკრიპტი აგდებდა შეცდომებს;

    დიდი მადლობა :)

  10. არაფრის :) პირიქით დიდი მადლობა რომ გატესტე და შეცდომები აღმოაჩინე :)

    P.S.
    ლევან, შენი თხოვნა შევასრულე და ჩავრთე ქართული კლავიატურა კომენტარის ფორმაში :P

  11. levani says:

    ვაახ ასზწორებს, აუ ეს უკვე სექსუალურია, მაგრამ ერთი პრობლემა მაინც რჩება, პროგრამატულად არ არის შესაძლებელი რო ჩართო/ან გამორთო ქართული კლავიატურა?

  12. არა ლევან, ეგ შესაძლებლობა არ არსებობს ამ მომენტისთვის და ეხლა თავს ვიმტვრევ როგორ გავაკეთო ეგ. ანუ მინდა რომ კარგად გავაკეთო რეალიზაცია.. ხოდა უახლოვეს პერიოდში მაგ feature – საც შემოგთავაზებ(თ) :)

  13. ლევანი says:

    სოსო მაგარი გამოვა ძალიან, ი ნახე თუ არა, ამას რო დაამატებ ნერე ხო ვაფშე მამა იქნება, (ხო იცი მაგ ფუჩარის) გარეში ტინი არ იმუშავებს :D

  14. არ იმუშავებს კი არა მუშაობს :D მაგრამ დავამატებ მაინც, ხომ დაგპირდი? :)

  15. ლევანი says:

    ვაა,არა მუშაობს კი მარგრამ მე ვგულისხმობ ღილაკით რო ჩართო და გამორთო ეგ არ იმუშავებს მაგის გარეშე ანუ ასო G ს რო დააჭერო რო ჩარითოს/გამოირთოს

  16. კი ლევან, ვიცი რასაც ამბობ გავაკეთებ მაგას აუცილებლად :) რა არის იცი? სხვა რამეზე ვარ ეხლა გადართული და ვერ მოვიფიქრე წესიერად როგორ გავაკეთო… თორემ კი გავაკეთებ მაგას აუცილებლად :)

    P.S.
    კი ჰენდლერზე რომ დავწერე ზევით, ეგ მოდიფიკაცია დავაკომიტე და თუ გცალია გაეთამაშე მაგარი გაგისწორდება :)

  17. ლევანი says:

    ნუ ზარმაცობ :D (ნ”ენტუზიაზმის_მომნიცცჰებელი_სიცილაკი:) ველი ჩამრთველ გამომრთველ API მეეთოდს.

  18. Rocko says:

    P.S. ასევე სამომავლოდ კარგი იქნება, თუ ველის მხოლოდ სახელის მითითება იქნება შესაძლებელი… ან ID-ს… :)

  19. როკო, გამოაძრე აბა ახალი აპდეიტი… კი მუშაობდა მანამდეც მაგრამ დავხვეცე რაღაცა დეტალები…

    ესე იგი თუ მაგის გაკეთება გინდა რასაც შენ ამბობ, ასეთი რამე შეგიძლია გააკეთო:

    GeoKBD.map(null, ['myField1', 'myField2', 'fieldFromOtherForm', 'unknownField']);
    

    ანუ პირველი პარამეტრად ფორმის ნაცვლად null value გადაეცი და ეგ არის… ხო და თანაც არ აქვს მნიშვნელობა რომელიმე ფორმაში ეგეთი ველ(ებ)ი არის თუ არ არის, თუ არ არის უბრალოდ სკიპს გაუკეთებს და მორჩა… ანუ ბევრი ფორმების სხვადახვა ველები უპრობლემოდ შეგიძლია მიუთითო ერთდროულოად :)

    P.S. ველების ID მხარდაჭერა არ ჰქონდა და ეგეც დავამატე ;)

  20. Rocko says:

    ძალიან კარგი, ვცდი საღამოს, დიდი მადლობა :)

    ხოდა, რა უნდა მეკითხა. როგორ ფიქრობ, შესაძლებელი იქნება, რომ ველი კლასის მიხედვითაც იპოვოს?.. ანუ, არც ფორმის სახელი რომ გადასცე, არც ველის სახელი, არც ველის id, მხოლოდ კლასი…

    აქ ცოტა ძნელი ასახსნელია და მერე მოგიყვები რატომაც მჭირდება :)

  21. levani says:

    ანუ, არც ფორმის სახელი რომ გადასცე, არც ველის სახელი, არც ველის id, მხოლოდ კლასი…

    ეგ ცოტა ნელი ფუნქციია, ელემენტი კლასის სახელით რომ იპოვნოს,

    მაგრამ მაინც თU გადაქყვიტავს სოსო, სასურველია უკვე გამოცდილი და დატესტილი მეთოდები გამოიყენო აი ეს არის ერთერთი ყველაზე სწრაფი :

    function getElementsByClass(searchClass,node,tag) {
            var classElements = new Array();
            if ( node == null )
                    node = document;
            if ( tag == null )
                    tag = '*';
            var els = node.getElementsByTagName(tag);
            var elsLen = els.length;
            var pattern = new RegExp("(^|\s)"+searchClass+"(\s|$)");
            for (i = 0, j = 0; i 
    

    ან ვაშე სუპერ სწრაფი ექსპასით :

    
    document.getElementsByClassName = function(className, parentElement) {
      if (Prototype.BrowserFeatures.XPath) {
        var q = ".//*[contains(concat(' ', @class, ' '), ' " + className + " ')]";
        return document._getElementsByXPath(q, parentElement);
      } else {
        var children = ($(parentElement) || document.body).getElementsByTagName('*');
        var elements = [], child;
        for (var i = 0, length = children.length; i
    
  22. levani says:

    ვაა ეს რა უბედურებაბ ცოდ ტაგი ჭრის ნახევარს, ეეეეჰ

    ესეც კიდე წყარო : http://ejohn.org/blog/getelementsbyclassname-speed-comparison/

  23. levani says:

    ეხლა დამიწყებს სოსო ,შენ ჯქვერის ავტორის ციტატებს რატო წერო წადი და დუგლასას ციტატები დაწერეოო

  24. ლევან აი ეს ბლოგ პოსტი ნახე… მანდ მიწერია xPath – ზე ორიოდე სიტყვა… IE – ში საერთოდ არ მუშაობს :(

  25. იოსებს გაუმარჯოს. სოსოჯან, ჩემთან ერთი პატარა უსიამოვნებაა. მაშინ როცა კურსორი ველში ზის სადაც ქართულად უნდა დაწეროს, არ მუშაობს ფუნქციონალური კლავიშები F1-დან F11-მდე. F12 აკეთებს თავის საქმეს ხოლო დანარჩენი 11 კლავიში თანმიმდევრობით აბრუნებს სიმბოლოებს – პქრსტუვწხყზ. ამისი გამოსწორება არ შეიძლება? განსაკუთრებით F5 აღმოჩნდა უსიამოვნო :)

    მადლობა :)

  26. დამავიწყდა მეთქვა – ბროუზერი – Firefox 2.0.0.11

  27. ალეკო, კი მოგვარებადია როგორ არა… სხვა შენიშვნებიც დაგროვდა, ამასაც გავითვალისწინებ და განახლების შესახებ აქ დავწერ ;)

    დიდი მადლობა შენიშვნებისთვის :)

  28. ალეკო მოვაგვარე ეგ პრობლემაც და დაკომიტებულია სკრიპტი SVN – ში, შეგიძლია გამოაძრო :)

  29. გაიხარე :) კაცი ხარ კაცური! მადლობა

  30. გიორგი says:

    ბაგი დავიჭირე: GeoKBD არ უყურებს ედიტის readonly თვისებას, და იმ შემთხვევაშიც კი, როდესაც რედაქტირება აკრძალულია, სვამს მასში სიმბოლოებს

  31. დიდი მადლობა გიორგი, აუცილებლად გავითვალისწინებ მაგ ბაგს მორიგ განახლებაში რომელიც სულ მალე იქნება :)

  32. მარინა says:

    ძალიან დიდი მადლობა. თქვენ გაიხარეთ. ორი თვეა ვეწვალები. ყველაფერი სწორად იყო და არ გამოდიოდა. თქვენს მიერ მითითებული სტრიქონი როგორც დავამატე გამოვიდა. უღრმესი მადლობა.

  33. სოსო,

    მოკლედ დინამიურ ფორმებზე (რომლის შიგთავსიც “ნალეტუ” იქმნება აჯაქსით) ვერ ამართლებს შენი სკრიპტი, იმიტომ რომ ფორმის ელემენტები წინასწარ არ არის ცნობილი.

    კერძოდ, ფორმის დიდი ნაწილის სახელები არის ფორმატში: product[0][title] და ეგეთი პროდუქტი ფორმაზე რამდენი იქნება წინასწარ არავინ იცის. ამიტომ, ორი გამოსავალია, mon ami:

    1) ან სახელების პატერნებზე მიბმა უნდა გააკეთო. რეგექსპი არაა აუცილებელი თუნდაც product*-ზე მიბმა რო შემეძლოს, უკვე შეღავათია. მაგრამ მაგან პერსომანსს დედა არ აუფეთქოს?

    უფრო ალბათ:

    2) უარყოფითი ლისტინგის მითითება რო შეიძლებოდეს. ანუ შენ ახლა გაქვს, ან ფორმის ყველა ელემენტი – ან ჩამოთვალე რომლებიც გინდაო. და რომ შემეძლოს – ჩამოვთვალო რომლები _არ_ მინდა, ყველა სხვა კიდე მინდა.

    მოახერხებ? ;)

  34. კი იკა გავაკეთებ მაგას, უბრალოდ ძალიან ალიაქოთი მაქვს გარშემო კი იცი და ცოტა გავჭედე დეველოპმენტში :D მაგრამ გავაკეთებ აუცილებლად I promise B-)

  35. მე გამოვიყენე თქვენი სკრიპტი, მაგრამ არ მოქმედებს. ანუ უფრო დაწვრილებით რომ ვთქვათ: მაქვს პჰპ ფაილი და მასში echo “” – ჩადებულია html კოდი თქვენი სკრიპტის ასამოქმედი ჯავასკრიპტის მითითებებით. მართლაც რომ სკრიპტს გადაჰყავს შრიფტი, მაგრამ რატომღაც არ აბრუნებს checkbox – გათიშვის შემთხვევაში არსებულ ინგლისურ კლავიატურას. რისი ბრალი შეიძლება იყოს? თანაც ისიცაა გასათვალისწინებელი, რომ როგორ თქვენს საიტზე დევს ვებ-გვერდი sample-ის სახით, ყველაფერი ზუსტად ქასეა გაკეთებული, მაგრამ შედეზე უკვე გაცნობეთ. ეგებ გაქვთ რაიმე ვარაუდი?

  36. ForceMasteter – შენს checkbox-ს სახელი რა ჰქვია?

  37. ForceMaster says:

    geo

  38. Landish says:

    სოსო… შეკითხვა მაქვს..
    ჯავასკრიპტის მეშვეობით მასივით ვამატეპ რამდენიმე text ფორმას.. რომელთა სახელებია (name)
    name=”question_1″
    name=”question_2″
    name=”question_3″
    … და ა.შ.
    როგორ ჩავწერო GeoKBD.map(); -ში კოდი, რომ ქართულად ყველა ტექსტ ფორმაში იწერებოდეს, რომლის სახელიც არის question_ID ?

  39. @Landish

    ფორუმზე გიპასუხე :) აგერ მისამართი: http://forum.ge/?showtopic=33780237&view=findpost&p=11320756

    თუ რამეში ვერ გაერკვევი ხვალ საღამოსთვის ვგეგმავ დოკუმენტაციის დადებას და მერე დეტალურად გავიაროთ პრობლემები ;)

  40. Landish says:

    პოსტი ვნახე, მადლობა გამოხმაურებისთვის.. დადებული არქივიც ვიხილე და კმაყოფილი დავრჩი, დოკუმენტაციის გამოქვეყნებას დაველოდები ჯერ და თუ კი რაიმეს ვერ გავარკვევ, მხოლოდ მაშინ შეგაწუხებ დასახმარებლად.. : )

  41. გიორგი says:

    როგორ მოვაშოროთ შეცდომა საიტიდან (ქვედა მარცხენა კუთხეში) თქვენი სკრიპტის დაყენების შემდეგ?
    აუცილებლად დაველოდები თქვენს გამოხმაურებას …

  42. სოლომონი says:

    გამარჯობა, ქართული კლავიატურის დაყენება მინდა ჩემს კომპიუტერზე, ძებნა-ძებნით ამ საიტს მოვაგენი, ყველაფერი გადავიწერე რაც საჭირო იყო მაგრამ ვერაფერი გავუგე, ან სად უნდა ჩავსვა ეს ფაილები, ძალიან გთხოვთ გამაგებინოთ რამე.

დატოვე კომენტარი:

ქართული კლავიატურა, ჩართვა/გამორთვა კლავიშით "~"