You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Magnolia 5可以让用户标记任何系统里的位置为书签。这个设计的想法是,用户能够收藏他们常用的应用,特性和页面。与其不得不通过导航去目标位置,不如直接点击书签。您可以在浏览器种直接标记位置,也可以使用Favorites应用。

通过历史碎片标记位置

标记任何位置的能力是通过在URL结尾处附上一个历史碎片来实现的。在Magnolia 5里,碎片跟踪应用的内部状态。它识别应用的名称,打开的选项卡,有时候也识别到被编辑页面的路径。这就使得用户能够标记非常精细的细节信息,例如在一个网站体系里选择一个特定页面。

历史碎片的概念并不是Magnolia 5特有的,而是我们是从Google Web Toolkit里引进的。GWT文档是这么解释它的:

对于每一个能够在历史里找到的页面,应用应该生成一个独一无二的历史记号。记号可以是一个简单的字符串,让应用能够通过分析它而返回到一个特定的状态。这个记号可以在浏览器历史中被保存为一个URL碎片(在位置栏中,“#”号之后),当用户在历史里前后查找或是打开一个链接时,这个碎片则被返回到应用程序。

碎片格式

历史碎片对自带的Shell应用使用以下句法:

#shell:<shellAppName>:<parameter>

对普通的应用使用以下句法:

#app:<appName>:<subAppId>:<parameter>

井号#是一个标准的分隔符,标志URL的碎片部分开始。井号后的部分则用冒号相互隔开。

  • 第一部分是类型标识符。它可以是应用或者Shell,取决于该应用是普通的应用,还是三个特殊的Shell应用之一(applaucherpulsefavorite)。对于您自己的应用,这个字符串总是app
  • appName识别应用。三个Shell应用的内部名称为applauncherpulsefavorite。普通应用的命名方式也可以预见:Pages应用为pages,Assets应用则是assets等等。您可以在应用配置里定义您自己的应用名。Magnolia 5使用应用名来在系统里识别应用。
  • subAppId识别子应用。子应用以选项卡的方式显示给用户。每个应用至少有一个子应用。Magnolia推荐您将您的主要子程序命名为main,为保持一致性。如果应用没有提供其它子应用的话,main子应用可以是唯一的选项卡。创建内容应用时,将您的子应用命名为browserdetail。
  • parameter是碎片当中最后的部分。您可以添加诸如preview这样的参数来指导应用在预览模式显示页面。使用分号来将多个参数分隔开。

碎片样例

  1. Shell的Pulse应用。
#shell:pulse
  1. Pages应用下的browser子应用。/demo-project/about页面当前在树型视图中被选中。
#app:pages:browser;/demo-project/about:treeview
  1. Pages应用的detail子应用。/demo-project/about页面当前正被编辑。
#app:pages:detail;/demo-project/about:edit
  1. Pages应用的detail子应用。/demo-project/about页面当前正被预览。view参数指导应用在预览模式显示页面。
#app:pages:detail;/demo-project/about:view

关于subAppId的更多信息

历史碎片的subAppId部分可以保存不仅仅是子应用名字的更多信息。Pages应用的每个detail子应用(选项卡)编辑一个特定的页面。在这种情况下,subAppId同样包含到该页面的路径,例如#app:pages:detail;/demo-project/about。子应用名和路径之间用分号隔开。这里不能用冒号,因为它会破坏这个历史记号。

每个subAppId都是独一无二的。这就允许系统能够辨认已经打开的选项卡并将其作为焦点,而不是打开一个副本。如上所示,当Pages应用打开一个detail子应用时,它会给该子应用分配一个独一无二的ID,其中包含了子应用名称(detail)和去页面的路径(/demo-project/about)。如果用户已经打开这个页面,收到请求时应用则会将这个选项卡作为焦点。

参数

您可以利用参数来传递附加信息,例如告诉detail子应用在预览模式显示页面。

#app:pages:detail;/demo-project/about:view

这些参数均为碎片的一部分,并且只对这个应用有效。它们不同于请求参数,请求参数在URL中出现的较早,甚至在碎片开始之前就有了。

example.com/.magnolia?mgnlLocale=en#app:pages:detail;/path/to/page:view

例子:

  • treeview: 在树型视图中显示被选中的项目。
  • listview: 在列表视图中显示被选中的项目。
  • thumbnailview: 在缩略视图中显示被选中的项目。
  • edit: 打开detail子应用的编辑器。
  • view: 打开detail子应用的预览模式。

在浏览历史中来回移动

位置碎片是Magnolia 5的关键导航特性。它使得使用浏览器本身的来回按钮变的可能。这才是现代的网络应用应有的工作方式。与其防止用户来回点击,不如让他们凭直观感觉操作。如果点击返回看起来是回到前一个状态应做的事,那么应用应该支持这种感觉。

Inter-app location firing 应用之间的位置变化?

TODO: Triggering location changes between apps.

Favorites应用

在系统里保留Favorites的一个好处就是,它们自动就是便携的。如果您工作在多个电脑和不同的浏览器上,书签仍然可用。Favorites功能对系统管理员来说同样是个解脱,因为他们需要为很大的用户群提供这个功能。管理员可以创造一套预定义好的书签,让所有的用户都可以立即使用。

最佳实践

当您在用户界面作出改动时,您最好总是通过移动位置来完成。如果您不这么做的话,用户创建的书签将不再准确,用户就无法回到他们原来的地方。您应该在设计应用时,将位置早些考虑进去。
  • No labels