2
1
0

Confluence の LiveSearch マクロで、
Label の制限部分で複数のラベルを指定した際、
リアルタイムで表示されるプルダウンリストでは期待するページが表示されるのですが、
Enter を押下したり虫眼鏡マークのボタンを押下して
Confluence の検索画面に遷移すると検索結果が何もなくなってしまいます。

何か回避策はないでしょうか?

    Commentコメントを追加...

    1 回答

    1.  
      2
      1
      0

      恐らく以下に起票されている不具合に該当する問題です...

      Cloud 版での報告となっていますが、
      Server 版でも起きるとコメントされています。

      Workaround を試してみましたが、上手く動作せず
      有用な回避策は無いように思えます...

      LiveSearch マクロを組み込む形で以下のユーザマクロを作成すると、
      Enter の押下や虫眼鏡ボタンの押下で
      期待する結果となるページを開くことができたように思えました。

      ## @param Labels:title=Labels|type=string
      #set ($labelString = $paramLabels.replaceAll(", +", ","))
      
      <ac:structured-macro ac:name="livesearch" ac:schema-version="1">
      		<ac:parameter ac:name="type">page</ac:parameter>
      		<ac:parameter ac:name="labels">$labelString</ac:parameter>
      </ac:structured-macro>
      
      <script>
      (function() {
        var contextPath = Confluence.getContextPath();
      
        AJS.$('.aui.aui-dd-parent').on('submit', function() {
      	  return false;
        }); 
        
        AJS.$('.search-macro-button.aui-button').on('click', function() {
            var searchText = AJS.$('.search-macro-query > input')[0].value,
                urlLabelString = '${labelString}'.replace(/,\s+/g, function(all, letter) {
                		return '","';
                }),
                url = encodeURI(contextPath + '/dosearchsite.action?cql=siteSearch ~ "' + searchText + '" and label in ("' + urlLabelString + '")&queryString=' + searchText);
          	
            location.href = url;
        });
      })();
      </script>
      1. Shuzaburo Doba

        LiveSearch マクロを large サイズで使用する場合は
        以下のようになるでしょうか...

        ## @param Labels:title=Labels|type=string
        #set ($labelString = $paramLabels.replaceAll(", +", ","))
        
        <ac:structured-macro ac:name="livesearch" ac:schema-version="1">
        		<ac:parameter ac:name="type">page</ac:parameter>
        		<ac:parameter ac:name="labels">$labelString</ac:parameter>
        		<ac:parameter ac:name="size">large</ac:parameter>
        </ac:structured-macro>
        
        <style>
          .new-live-search-button {
            display: none;
          }
        </style>
        <script>
        (function() {
          var contextPath = Confluence.getContextPath();
          var $submitButton = AJS.$('.search-macro-button.aui-button');
          
          // ボタンがなかったら追加する
          if ($submitButton.length === 0) {
          	 AJS.$('.search-macro-fields').append('<button type="submit" class="new-live-search-button"></button>');
          }
          
          AJS.$('.aui.aui-dd-parent').on('submit', function() {
        	  return false;
        	});
          
          AJS.$('button.new-live-search-button').on('click', function() {
          		var searchText = AJS.$('.search-macro-query > input')[0].value,
              		urlLabelString = '${labelString}'.replace(/,\s*/g, function(all, letter) {
                  		return '","';
              		}),
              		url = encodeURI(contextPath + '/dosearchsite.action?cql=siteSearch ~ "' + searchText + '" and label in ("' + urlLabelString + '")&queryString=' + searchText);
            	
            	location.href = url;
          });
        })();
        </script>
      Commentコメントを追加...