it-swarm-ko.tech

플래그 링크를 체크 박스로 변환

보기 내에서 Flags 링크를 확인란으로 변환하는 방법이 있습니까? Flag Form 모듈을 시도했지만 작동하지 않았습니다 (적어도보기에서). 플래그 표시 유형으로 확인란 추가 기능 요청을 검토했습니다. 토론에서는 CSS, JavaScript를 사용하거나 플래그 템플릿 파일을 해킹하는 방법에 대해 설명합니다. 다른 방법이 있습니까?

나는 이것을하기 위해 자바 스크립트를 사용하는 것을 반대하지는 않지만 그것에 대해 거의 알지 못한다.

4
James Stallings

플래그 Add Checkboxes ad Display Type 기능 요청의 의견은 JavaScript 사용을위한 좋은 기반을 제공했습니다. JQuery를 읽고 D6에서 작동하도록 코드를 약간 변경했습니다. 모든 크레딧은 ngmaloney 로 이동합니다.

Drupal.behaviors.alter_flag_links = function (context){
    //Returns a checkbox dom object
    var cb_factory = function(class_attr, checked) {
      var checkbox = document.createElement("input");
      checkbox.type = "checkbox";
      checkbox.checked = checked;
      jQuery(checkbox).attr('class', class_attr);
      return checkbox;
    }
    //Convert each link to a form checkbox.
    jQuery('span.your-flag-value').each(function() {
      var flag_link = jQuery(this).children('a');
      if(flag_link.length == 0) {
        return;
      }
      flag_link.html(''); //Hide text
      var flag_classes = flag_link.attr('class');
      var checked = false;
      var class_attr = 'compare-cb';
      if(flag_classes.match(/unflag-action/)) {
        checked = true;
      }
      //Only Add form element if it doesn't exist
      if(jQuery(this).children('input').length == 0) {
        var elem = cb_factory(class_attr, checked);
        jQuery(this).prepend(elem);
      }
    });
    //Attach an event listener to each of the new checkboxes
    jQuery('input.compare-cb').each(function() {
      jQuery(this).click(function() {
        jQuery(this).parent().children('a').click();
      });
    });
};
2
James Stallings