Magnolia Shell是Magnolia CMS的可视化层,也就是使Magnolia 5易于辨认的外观和感觉。Shell创建您登入系统后所看见的用户界面:绿色的背景,Magnolia标志图片,以及三个Shell应用的图标:应用启动器、Pulse信息中心和收藏夹。

Magnolia Shell作为应用容器

在Magnolia 5里,应用工具的界面焦点非常狭隘,只能让您进行一些紧密联系的任务,或处理特定的一套数据。应用不一定要工作在网站页面这样的单个物理数据集上,它还可以涵盖多个物理数据集,来完成应用包含的任务。应用中包含子应用。应用一旦开启,它在应用启动器屏幕上的应用板块就会改变颜色,来说明它正在运行。只要没有正在运行的对话框,您可以在任何时候返回到应用启动器屏幕。在应用启动器屏幕上,您可以切换或开启另一个应用。从用户界面上来说,Magnolia Shell是应用所在的页面页眉以下的区域,在正在运行应用的浏览器窗口里显示为浅绿色。

然而,Shell不仅能为系统本身提供可视化界面,也使您自己的应用看起来属于Magnolia CMS的一部分。Shell保证了所有应用的视觉统一性,让它们能够合适的装进用户界面的其他部分。如果做一个类推来帮助理解的话,可以把Magnolia Shell想象成电脑上的操作系统。在Mac OS X上,桌面和菜单是不可改变的,它们总是现时的,为打开应用程序,以及应用程序添加菜单提供位置。而Windows 8样式的用户界面为Windows应用提供共同的外观和感觉,在所有运行Microsoft系统的设备上创建一个熟悉的界面,这正是Magnolia Shell所做的。

从功能的角度说,Shell是一个为应用提供基本服务的容器,使您能够启动应用并显示对话框。同时,Shell也负责您在不同的应用之间切换时的视觉效果。例如,当您回到应用启动器屏幕,准备启动另一个应用时,之前运行的应用就会退到背景里。这种透视的界面效果实际上是应用堆栈造成的,告诉您应用已经在运行,如果您回到那个应用,您会发现您的工作还停留在您离开时的状态。

AdminCentral

如果您对Magnolia 4熟悉的话,您现在可能已经认出Magnolia Shell差不多和旧版本的AdminCentral同义。AdminCentral这个术语在Magnolia 5里依然有效并适用。管理系统是在AdminCentral里完成的,Magnolia Shell被用作它的用户界面。

旧的AdminCentral负责创建一个固定的用户界面图。当您在左边的菜单里点击一个命令时,内容会被显示在右边。这个动作是可以预见的,并且容易学,因为它是固定的。相似地,Magnolia Shell提供一个不随Magnolia CMS实例而改变的用户界面。

Magnolia Shell用户界面是被保护的,也就是说,您不能对其做改动。用户界面是Magnolia视觉同一性的一部分,使系统立刻被识别,让用户很快找到方向。这就是为什么我们不允许用户来编辑Shell或它的部件。然而,您可以在应用启动器屏幕上添加您自己的应用,甚至创建您自己的应用组。

终端用户需要了解的Shell

终端用户如编辑者和管理员可将Magnolia Shell看作是管理界面。Shell让用户能够启动应用并在不同应用之间切换,收取通知,以及标记常去的位置和任务。Shell帮助用户启动应用,然后将控制权交还到用户手中——这适用于所有的应用,包括那三个自带的应用。Shell不负责应用里发生的一切,它只默默的在后台保持着一些程序的运行。因此,终端用户可能永远不需要太了解Shell。

开发者需要了解的Shell

作为一个程序开发者,了解Magnolia Shell做什么是有好处的。然而,一旦您知道它是做什么的,您就可以完全忘记Shell,将它看作是一个操作系统详述。

您可以将Shell看作是一个工具箱,定义您可以或不可以对系统做的事情,这些事情是细节化的基本服务。这就意味着您通常不需要跟Shell直接进行交互。针对常用的应用开发任务,Magnolia有很多直观的捷径。

例如,Shell负责给Pulse发送消息。然后,您并不需要知道具体使用何种Shell方法来发送消息。但您可以在您的应用代码里,创建一个到AppContext对象的引用。这个对象提供发送消息,显示确认对话框,以及很多其它日常事务的捷径。与AppContext进行交互比用Shell本身更为直接。

Magnolia Shell的任务

总之,Shell做以下事情:

  • 提供运行应用的环境。
  • 创建系统的用户界面。
  • 容纳应用启动器和Pulse信息中心,并为打开他们提供途径。
  • 在Shell里,可以用图标和信息面板显示系统和应用的通知。
  • 在Shell里,可以看到用户的档案、个人设置以及消息。
  • 在运行的应用之间切换,使用户可以看到应用之间的变化。
  • 提供窗口管理。
  • 显示对话框,处理对话模式。 
  • 接受应用发起长时间运行的任务,并一直监视它们运行到结束。
  • 为在应用和子应用之间移动和拷贝内容提供工具。
  • 为应用分组。
  • 可以作为过滤器,只显示关于某个特定的网站或工程的应用和控制面板(Dashboard)数据。

为了能够运用Shell的服务,可以注入一个到AppContext对象的引用到您的应用代码里。

添加一个引用到AppContext对象
public class HelloWorldApp extends BaseApp {
    private AppContext appContext;

    @Inject
    public HelloWorldApp(AppContext appContext, AppView view) {
        super(appContext, view);
    }
    ...
}

Magnolia Shell作为用户界面元素

在用户界面,Shell相当于是浏览器视口。Shell是父容器,在它里面是应用框架。框架就像是应用的过程管理者——它管理应用的生命周期(开始、终止和聚焦)。在您的应用代码里,您可以要求应用框架为您执行任务。框架也会反过来与Magnolia Shell进行对话,隐藏具体的详细内容。

下一层就是标签卡。每个应用程序必须至少有一个标签卡,但也可以有很多。例如,页面应用有一个标签卡叫做页面。应用为每个您编辑的网页打开一个新的标签卡。

标签卡里包含工作台,工作台是用户界面里显示应用数据的区域。例如,在页面应用里,数据就是一个页面的列表。您可以将数据用三种不同的视图显示:树,列表,或网格。

下图展示了Magnolia Shell是最外层的用户界面元素,基本等于浏览器视口。我们将会在下个小节里讨论一个应用的各个组成部分。

 

  • No labels