Thursday, July 23, 2015

Alfresco Community 4.2.c〜fでIE11だとログインできない問題への対処方法

こんにちは、そうまです。

今回はAlfresco Community 4.2.c〜fでIE11だとログインできない問題の対処方法についてまとめました。

この「IE11でログインできない」問題は比較的有名ですので、ネット上で探してみると対処方法は見つかります。しかし、記載された対処方法のみを行った場合に別の問題が起きてしまうことがありましたので、今更感がありますがエントリーを書いてみました。
なお、この問題は最新のAlfresco Community 5.0.xでは解消されています。

1. login.get.html.ftlファイルの修正

この問題について検索すると良く提案されている対策です。
ログインボタンのid属性を削除すると、IE11でもログインができるようになります。

<tomcat_dir>/webapps/share/WEB-INF/classes/alfresco/site-webscripts/org/alfresco/components/guest/login.get.html.ftl
57行目:
<input type="submit" id="${el}-submit" class="login-button" value="${msg("button.login")}"/>
<input type="submit" class="login-button" value="${msg("button.login")}"/>
ただし、id属性を削ってしまった影響として、ログインボタンが以下のようにブラウザデフォルトのスタイルに変化してしまいます。


 2. login.cssの修正

デフォルトのスタイルとなってしまったログインボタンをAlfrescoのスタイルとなるように修正しましょう。idでの指定ができなくなりましたので、以下のclassでスタイルを指定した記述を追加します。
<tomcat_dir>/webapps/share/components/guest/login.css
.form-fields.login .form-field input.login-button {
  background-color: #ffa028;
  border-color: #ffa028;
  border-style: solid;
  color: #FFFFFF;
  font-family: Open Sans Bold,Arial,sans-serif;
}
これで、元どおりのスタイルが適用されたログインボタンとなります。



3. login.jsの修正

1.2.の対処方法だけで修正ができているように見えるのですが、実はid属性を削除したことで、javascriptエラーが発生するようになっています。
このエラーはブラウザをデフォルトの設定で使用している場合は表示されませんが、ブラウザでスクリプトのデバッグを行う設定となっていると、ログインボタンを押したときにエラーダイアログが表示されます。

例えばIE11の場合、[インターネットオプション]-[設定]-[ブラウズ]で、「スクリプトのデバッグを使用しない (Internet Explorer)」のチェックを外すと、以下のダイアログが表示されます。



Alfrescoを利用するだけであれば問題にならないかもしれませんが、Alfrescoでの開発の途中など、デバッグ有効にしているとログイン毎にダイアログが表示されて煩わしいため、これも対応しましょう。  

<tomcat_dir>/webapps/share/components/guest/login.js
90行目付近:
 this.widgets.submitButton.set("disabled", true);
 if (null != widgets.submitButton)
 {
     this.widgets.submitButton.set("disabled", true);
 }

109行目付近:
 this.widgets.submitButton = Alfresco.util.createYUIButton(this, "submit", null, {
    type: "submit"
 });
 if (null != this.widgets.submitButton)
 {
     this.widgets.submitButton = Alfresco.util.createYUIButton(this, "submit", null, {
        type: "submit"
     });
 }

なお、Alfrescoから利用されるのはlogin.jsをminifyしたlogin-min.jsですので、修正したlogin.jsからlogin-min.jsを作り直す必要があります。
 javascriptのminifyには様々なツールが提供されていますが、AlfrescoにはYUI Compressorが同梱されていますのでこれを利用します。
$ cd <tomcat_dir>/webapps/share/components/guest/
$ mv login-min.js login-min.js.orig
$ java -jar ../../WEB-INF/lib/yuicompressor-2.4.7.jar login.js -o login-min.js

これで、エラーも発生しなくなりました。

Alfresco Community 5.0.dに続きAlfresco One Enterprise 5.0.1がリリースされた現在ですが、まだまだAlfresco Community 4.2系を継続利用する環境もあると思いますので、その際の参考になれば幸いです。