4

For some specific reasons, I would need to automatically add or append a parameter to URL on every request if and only if that parameter already exists in URL since the first request. In other words, if I have the URL /share/page/site/sample/documentlibrary?embedded, every request to /share/page/site/sample/[whatever] must contain the embedded parameter plus other parameters that could be added by the original request.

I'm working with Alfresco Share (v4.2.b) what means that the web application already exists and despite of I can perform customization, I have limitations because I don't have full control on it. If it was my web app created from scratch it wouldn't be a problem. According to the restrictions I have, the solution ideally should be as less intrusive as possible. At the same time if it is a JavaScript based solution, the use YUI rather than other library is a plus but not a requirement.

I have been searching looking for an approach and after that I have in mind the next possible solutions:

  1. Using JavaScript by adding the parameter to URL before every page unload. Something like:

        window.onbeforeunload = function(e) {
            // Add parameter to target URL
            };
    

    But I believe it doesn't work as I was reading and according to some tests I did. It seems there is a sort of security restriction (which makes sense by the way).

  2. By updating the href attribute of every link (<a/>) using JavaScript too, once the page has finished loading. For example, /share/page/site/sample/document-details?nodeRef=workspace://SpacesStore/089acea3-3b37-403d-9a8d-ae484ddd2ccb could be transformed to /share/page/site/sample/document-details?nodeRef=workspace://SpacesStore/089acea3-3b37-403d-9a8d-ae484ddd2ccb&embedded. The problem of this solution is that both forms GET or POST and href triggered using JavaScript would be out of scope...

  3. Using any URL rewrite technique or library like UrlRewriteFilter (didn't have time yet to test it, sorry).

  4. Create an Alfresco Share extension module which changes or updates every request, maybe with the help of a module or subcomponent evaluator. I don't know if it is doable with extension modules, but I believe I read anywhere that you can perform changes to requests.

I have to add (for those with Alfresco Share knowledge) that options 1, 2 and 4 would be implemented as an extension module.

Well, I hope I have explained good enough my question. I'd strongly appreciate some advice or possible approaches. I will keep working on it anyway and I will come up with any update.

4

3 に答える 3

2
  1. すべてのリクエストに対応する場合は、フィルターが最適です。あなたが述べたように共有はすでにurlrewriteを使用しているので、デフォルトのものを変更してパラメータを追加してください。

  2. 共有の知識がある場合は、含まれているテンプレートを上書きするとよいでしょうalfresco-template.ftl。templates/org/alfresco/include にある override です。このテンプレートは、ページの生成時に常に読み込まれます。また、Liferay ポートレット用に定義された portletMode もあります。

  3. documentlibrary を埋め込むために行ったことは、独自の共有カスタム ページを定義することです。そのため、「常に」存在する引数はもう必要ありません。

于 2012-12-12T13:03:21.490 に答える
1

Apache HTTPd を使用して接続をプロキシしmod_proxymod_rewriteユーザー要求に必須パラメーターがまだ含まれていない場合にユーザー要求をリダイレクトするのはどうですか? ディレクティブを使用するRewriteRuleと、パラメーターがまだ存在しない場合にパラメーターを追加する非常に豊富な式を指定できます ( docs )

于 2012-12-14T09:59:45.740 に答える
0

Alfresco は使用していませんが、もう 1 つのオプションは、カスタム JSP タグを使用することです。

これを customlink と呼び、ページにリンクを表示するときに、タグの代わりにこのカスタム jsp タグを使用します<a>

例えば

<mynamespace:customlink href="/somelink">My Content</mynamespace:customlink>

カスタム JSP タグは、リクエストのクエリ文字列パラメーターをチェックし、存在する場合はそれを URL に追加し、クエリ文字列を含むタグを出力します。

これには、JS に依存したり、これらをクライアント側に公開したりしないという利点があります。また、将来のさらなる拡張も可能にします。

于 2012-12-12T10:52:08.407 に答える