소스 검색

fix #1192 add q request parameter

yfujita 8 년 전
부모
커밋
bc3727849e

+ 1 - 1
src/main/assemblies/extension/fess-ss/build.sh

@@ -4,7 +4,7 @@ npm install --save-dev webpack
 npm install --save-dev babel-core babel-loader babel-preset-es2015 babel-preset-stage-0 babel-polyfill
 npm install --save-dev css-loader style-loader sass-loader node-sass extract-text-webpack-plugin
 npm install --save-dev jquery
-npm install -save-dev handlebars handlebars-loader
+npm install --save-dev handlebars handlebars-loader
 
 webpack
 

+ 20 - 0
src/main/assemblies/extension/fess-ss/form.html

@@ -0,0 +1,20 @@
+<html>
+
+<script>
+  (function() {
+    var fess = document.createElement('script');
+    fess.type = 'text/javascript';
+    fess.async = true;
+    fess.src = '//localhost:8080/js/ss/fess-ss.min.js';
+    fess.charset = 'utf-8';
+    fess.setAttribute('id', 'fess-ss');
+    fess.setAttribute('fess-search-page-path', 'result.html');
+    //fess.setAttribute('request-headers', '{"Authorization":"bbb"}');
+    fess.setAttribute('fess-url', '//localhost:8080/json');
+    var s = document.getElementsByTagName('script')[0];
+    s.parentNode.insertBefore(fess, s);
+  })();
+</script>
+
+<fess:search-form-only></fess:search-form-only>
+</html>

+ 5 - 1
src/main/assemblies/extension/fess-ss/package.json

@@ -17,10 +17,14 @@
     "css-loader": "^0.28.4",
     "extract-text-webpack-plugin": "^2.1.2",
     "handlebars": "^4.0.10",
+    "handlebars-loader": "^1.5.0",
     "jquery": "^3.2.1",
     "node-sass": "^4.5.3",
     "sass-loader": "^6.0.6",
     "style-loader": "^0.18.2",
-    "webpack": "^2.6.1"
+    "webpack": "^2.7.0"
+  },
+  "dependencies": {
+    "handlebars-loader": "^1.5.0"
   }
 }

+ 20 - 0
src/main/assemblies/extension/fess-ss/result.html

@@ -0,0 +1,20 @@
+<html>
+
+<script>
+  (function() {
+    var fess = document.createElement('script');
+    fess.type = 'text/javascript';
+    fess.async = true;
+    fess.src = '//localhost:8080/js/ss/fess-ss.min.js';
+    fess.charset = 'utf-8';
+    fess.setAttribute('id', 'fess-ss');
+    fess.setAttribute('fess-url', 'http://localhost/json');
+    fess.setAttribute('fess-search-page-path', 'result.html');
+    var s = document.getElementsByTagName('script')[0];
+    s.parentNode.insertBefore(fess, s);
+  })();
+</script>
+
+<fess:search-form-only></fess:search-form-only>
+<fess:search-result-only></fess:search-result-only>
+</html>

+ 35 - 3
src/main/assemblies/extension/fess-ss/src/controller.js

@@ -6,17 +6,44 @@ export default class {
     this.FessModel = FessModel;
     this.fessUrl = FessJQuery('script#fess-ss').attr('fess-url');
     this.fessContextPath = this.fessUrl.slice(0, this.fessUrl.indexOf('/json'));
+    this.searchPagePath = FessJQuery('script#fess-ss').attr('fess-search-page-path');
+    this.urlParams = function() {
+      var params = {};
+      var array = location.search.replace(/\?/g, '').split('&');
+      array.forEach(function(param){
+        var tpl = param.split('=');
+        if (tpl.length == 1) {
+          params[decodeURIComponent(tpl[0])] = '';
+        } else if (tpl.length == 2) {
+          params[decodeURIComponent(tpl[0])] = decodeURIComponent(tpl[1]);
+        }
+      })
+      return params;
+    }();
   }
 
   start() {
     this.FessView.init();
-    this.FessView.renderForm();
+    this.FessView.renderForm(this.searchPagePath, this.urlParams);
     this._bindForm();
+    if (this.urlParams.q !== undefined) {
+      if (FessJQuery('.fessWrapper .fessForm form input').length > 0) {
+        FessJQuery('.fessWrapper .fessForm form input').val(this.urlParams.q);
+      }
+      if (FessJQuery('.fessWrapper .fessFormOnly form input').length > 0) {
+        FessJQuery('.fessWrapper .fessFormOnly form input').val(this.urlParams.q);
+      }
+      try {
+        this._search({q: this.urlParams.q});
+      } catch (e) {
+        console.log(e);
+      }
+    }
   }
 
   _bindForm() {
     var $cls = this;
-    FessJQuery('.fessWrapper form').submit(function(){
+    FessJQuery('.fessWrapper .fessForm form').submit(function(){
       try {
         var keyword = FessJQuery('#contentQuery', this).val();
         FessJQuery('.fessWrapper #contentQuery').val(keyword);
@@ -52,7 +79,12 @@ export default class {
     $fessResult.css('display', 'none');
 
     if (params.q === undefined) {
-      var keyword = FessJQuery('.fessWrapper #contentQuery').val();
+      var keyword = '';
+      if (FessJQuery('.fessWrapper .fessForm').length > 0) {
+        keyword = FessJQuery('.fessWrapper .fessForm #contentQuery').val();
+      } else if(FessJQuery('.fessWrapper .fessFormOnly').length > 0) {
+        keyword = FessJQuery('.fessWrapper .fessFormOnly #contentQuery').val();
+      }
       if (keyword.length > 0) {
         params.q = keyword;
       } else {

+ 0 - 1
src/main/assemblies/extension/fess-ss/src/css/style.scss

@@ -1,7 +1,6 @@
 /* Override some defaults */
 
 .fessWrapper {
-	min-height: 100%;
 	position: relative;
 	padding-top: 70px;
 	margin-bottom: 4em;

+ 2 - 2
src/main/assemblies/extension/fess-ss/src/fess-messages.js

@@ -3,7 +3,7 @@ export default class {
     this.messages = {
       en: {
         'form.search.button': 'Search',
-        'form.input.placeholder': 'Fess custom search',
+        'form.input.placeholder': '',
         'result.number': 'results',
         'result.second': 'second',
         'result.order': 'Order',
@@ -15,7 +15,7 @@ export default class {
       },
       ja: {
         'form.search.button': '検索',
-        'form.input.placeholder': 'Fess カスタム検索',
+        'form.input.placeholder': '',
         'result.number': '件',
         'result.second': '秒',
         'result.order': '表示順',

+ 18 - 0
src/main/assemblies/extension/fess-ss/src/templates/fess-form-only.hbs

@@ -0,0 +1,18 @@
+<form accept-charset='utf-8'>
+  <table style="width:100%">
+    <tbody>
+      <tr>
+        <td>
+          <div>
+            <input type="text" name="q" maxlength="1000" size="50" autocomplete="off" id="contentQuery" class="query form-control center-block">
+          </div>
+        </td>
+        <td>
+          <div>
+            <button type="submit" id="searchButton" class="btn btn-primary"><i class="fa fa-search"></i>{form.search.button}</button>
+          </div>
+        </td>
+      </tr>
+    </tbody>
+  </table>
+</form>

+ 0 - 7
src/main/assemblies/extension/fess-ss/src/templates/fess-no-result.hbs

@@ -6,13 +6,6 @@
           <td width="50%">
             {{record_count}} {result.number} ({{exec_time}}{result.second})
           </td>
-          <td width="20%" align="right">
-            {result.order}:
-            <select class="form-control sort">
-              <option value="score.desc">{result.order.score}</option>
-              <option value="last_modified.desc">{result.order.last_modified}</option>
-            </select>
-          </td>
         </tr>
       </tbody>
     </table>

+ 7 - 5
src/main/assemblies/extension/fess-ss/src/templates/fess-result.hbs

@@ -7,11 +7,13 @@
             {{record_count}} {result.number} ({{exec_time}}{result.second})
           </td>
           <td width="20%" align="right">
-            {result.order}:
-            <select class="form-control sort">
-              <option value="score.desc">{result.order.score}</option>
-              <option value="last_modified.desc">{result.order.last_modified}</option>
-            </select>
+            <div class="order">
+              {result.order}:
+              <select class="form-control sort">
+                <option value="score.desc">{result.order.score}</option>
+                <option value="last_modified.desc">{result.order.last_modified}</option>
+              </select>
+            </div>
           </td>
         </tr>
       </tbody>

+ 41 - 28
src/main/assemblies/extension/fess-ss/src/view.js

@@ -1,5 +1,6 @@
 import FessJQuery from 'jquery';
 import formTemplate from '!handlebars-loader!./templates/fess-form.hbs';
+import formOnlyTemplate from '!handlebars-loader!./templates/fess-form-only.hbs';
 import resultTemplate from '!handlebars-loader!./templates/fess-result.hbs';
 import noResultTemplate from '!handlebars-loader!./templates/fess-no-result.hbs';
 
@@ -31,7 +32,7 @@ export default class {
       $fessFormWrapper.addClass('fessWrapper');
 
       var $fessFormOnly = FessJQuery('<div/>');
-      $fessFormOnly.addClass('fessForm');
+      $fessFormOnly.addClass('fessFormOnly');
       $fessFormWrapper.append($fessFormOnly);
 
       FessJQuery('fess\\:search-form-only').replaceWith($fessFormWrapper);
@@ -50,10 +51,18 @@ export default class {
     }
   }
 
-  renderForm() {
+  renderForm(searchPagePath) {
     var $fessForm = FessJQuery('.fessWrapper .fessForm');
-    var html = formTemplate(this.css);
-    $fessForm.html(this.FessMessages.render(html, {}));
+    var $fessFormOnly = FessJQuery('.fessWrapper .fessFormOnly');
+    if ($fessForm.length > 0) {
+      var html = formTemplate();
+      $fessForm.html(this.FessMessages.render(html, {}));
+    }
+    if ($fessFormOnly.length > 0) {
+      var html = formOnlyTemplate();
+      $fessFormOnly.html(this.FessMessages.render(html, {}));
+      FessJQuery('.fessWrapper .fessFormOnly form').attr('action', searchPagePath);
+    }
   }
 
   renderResult(contextPath, response, params) {
@@ -63,7 +72,11 @@ export default class {
     $fessResult.html(this.FessMessages.render(html, response));
     var $pagination = this._createPagination(response.record_count, response.page_size, response.page_number, params);
     FessJQuery('.fessWrapper .paginationNav').append($pagination);
-    FessJQuery('.fessWrapper select.sort').val(params.sort);
+    if (FessJQuery('.fessWrapper .fessForm').length > 0) {
+      FessJQuery('.fessWrapper select.sort').val(params.sort);
+    } else {
+      FessJQuery('.fessWrapper .fessResult table .order').css('display', 'none');
+    }
     this._loadThumbnail(contextPath);
   }
 
@@ -84,7 +97,7 @@ export default class {
     }
 
     var paginationInfo = (function(){
-      var allPageNum = Math.floor(recordCount / pageSize) + 1;
+      var allPageNum = Math.floor((recordCount - 1) / pageSize) + 1;
       var info = {};
       info.current = currentPage;
       info.min = (currentPage - 5) > 0 ? currentPage - 5 : 1;
@@ -139,27 +152,27 @@ export default class {
   _loadThumbnail(contextPath) {
     var $cls = this;
     var loadImage = function(img, url, limit) {
-  		var imgData = new Image();
-  		imgData.onload = function() {
-  			FessJQuery(img).css('background-image', '');
-  			FessJQuery(img).attr('src', url);
-  		};
-  		imgData.onerror = function() {
-  			if (limit > 0) {
-  				setTimeout(function() {
-  					loadImage(img, url, --limit);
-  				}, $cls.IMG_LOADING_DELAY);
-  			} else {
-  				FessJQuery(img).attr('src', contextPath + "/images/noimage.png");
-  			}
-  			imgData = null;
-  		};
-  		imgData.src = url;
-  	};
-
-  	FessJQuery('img.thumbnail').each(function() {
-  		FessJQuery(this).css('background-image', 'url("' + contextPath + '/images/loading.gif")');
-  		loadImage(this, FessJQuery(this).attr('data-src'), $cls.IMG_LOADING_MAX);
-  	});
+      var imgData = new Image();
+      imgData.onload = function() {
+        FessJQuery(img).css('background-image', '');
+        FessJQuery(img).attr('src', url);
+      };
+      imgData.onerror = function() {
+        if (limit > 0) {
+          setTimeout(function() {
+            loadImage(img, url, --limit);
+          }, $cls.IMG_LOADING_DELAY);
+        } else {
+          FessJQuery(img).parent().css('display', 'none');
+        }
+        imgData = null;
+      };
+      imgData.src = url;
+    };
+
+    FessJQuery('.fessWrapper .fessResult img.thumbnail').each(function() {
+      FessJQuery(this).css('background-image', 'url("' + contextPath + '/images/loading.gif")');
+      loadImage(this, FessJQuery(this).attr('data-src'), $cls.IMG_LOADING_MAX);
+    });
   }
 }

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
src/main/webapp/js/ss/fess-ss.min.js


이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.