详细说明
现在将在下面参考附图更全面地描述本发明,附图组成其一部分,并且作为说明示出了实施本发明的特定示例性实施例。但是,本发明可具体化为许多不同形式并不应解释为限制于这里所提出的实施例;而且,提供了这些实施例,从而对于本领域的技术人员而言本公开将是彻底而完全的,并将全面覆盖本发明的范围。尤其是本发明可具体化为方法或设备。相应地,本发明可采用全硬件实施例、全软件实施例或结合软件和硬件方面的实施例的形式。因此,以下详细说明不作为限制理解。
示例操作环境
参考图1,实现本发明的一个示例性系统包括计算设备,诸如计算设备100。计算设备100可配置为客户机、服务器、移动设备或任意其它计算设备。在非常基本的配置中,计算设备一般至少包括一个处理单元102和系统存储器104。根据计算设备的准确配置和类型,系统存储器104可以是易失性的(诸如RAM)、非易失性的(诸如ROM、闪存等)或二者的某种结合。系统存储器104一般包括操作系统105、一或多个应用程序106,并可包括程序数据107。在一个实施例中,应用程序106包括统一导航应用程序120,用于实现本发明的功能。这个基本配置通过虚线108内的那些组件示于图1。
计算设备100可具有附加特征和功能。例如,计算设备100还可包括附加的数据存储设备(可移动和/或不可移动的),诸如,例如,磁盘、光盘或磁带。这类附加的存储器由可移动存储器109和不可移动存储器110示于图1。计算机存储介质可包括以用于诸如计算机可读指令、数据结构、程序模块或其它数据等信息的存储的任意方法和技术实现的易失性和非易失性、可移动和不可移动的介质。系统存储器104、可移动存储器109和不可移动存储器110都是计算机存储介质的示例。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储技术、CD-ROM、数字通用盘(DVD)或其它光存储器、磁盒、磁带、磁盘存储器或其它磁存储设备或任意其它可用于存储所需信息并能被计算设备100访问的介质。任意这类计算机存储介质都可以是设备100的一部分。计算设备100还可具有输入设备112,诸如键盘、鼠标、笔、声音输入设备、触摸输入设备等。也可包括诸如显示器、扬声器、打印机等输出设备114。
计算设备100还包含通信连接116,使得设备能够与其它计算设备118通信,诸如经由网络。通信连接116是通信介质的一个示例。通信介质一般可包含诸如载波或其它传输机制的调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,并包括任意信息传输介质。术语“调制数据信号”指具有以编码信号中信息的方式设置或改变的其一或多个的特性的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线缆连接的有线介质和诸如声波、RF、红外和其它无线介质的无线介质。这里所用的术语计算机可读介质包括存储介质和通信介质两种。
统一导航
贯穿本说明书和权利要求书,术语“页面(page)”或“网页(web page)”指网络(例如,万维网)上由唯一的URL(统一资源定位符)标识的文档。术语“站点(site)”或“网站(web site)”指网络(例如,万维网)上包括一或多个页面(例如,主页)的位置。术语“根页面(root page)”通常指站点导航结构中顶端的页面,这与术语根目录指文件系统中顶端的目录几乎是一样的。
术语“顶端导航(top navigation)”或“全局导航(globalnavigation)”通常指一般由根的主要子区域组成的大多数页面的顶端上的水平条,并且经常还包括指向站点中其它页面的一些链接。也存在子站点可有其自己的全局导航用于整个区域集合的情况。全局导航栏位的外观可呈现如站点作者所选择的多种风格(例如,堆叠式工作表)(参见图2的210)。
术语“节导航(section navigation)”通常指从区域到区域改变但在一个单一区域内保持一致的导航栏位。节导航可包括站点的子区域或页面。有时节导航中链接的底层层次结构是通过使用飞出(flyout)或静态嵌套链接显示的。节导航可具有到站点的其它区域的链接或节导航中的“外部链接”。节导航栏位的外观也可呈现多种风格,带有一些示于页面左边的典型节导航栏位(参见图2的220)。
本发明的实施例涉及允许站点作者将站点的导航与站点的层次结构分离,同时还提供贯穿导航结构插入的改变或专门创作的链接。站点的导航结构表示为树,带有对应于容器的节点和对应于链接本身的项和分支(参见图3和4)。按照本发明,可添加创作的链接,它们在树内(即,在同一站点内)或跨树(即,在不同的站点)链接节点。以前,树内或跨树链接要求专门创作每个新链接,因为它们与站点的层次结构冲突。这样一个问题在链接的节点对应于一个包括大量子节点(例如在层次化结构中的低层节点)的容器时变得非常难。这些子节点的每一个还要求专门创作到该节点的新链接。此外,这些新链接是在其它站点或站点的其它位置中的链接的复制品,不仅浪费时间精力而且还浪费空间。而且,在其它位置或其它站点内的改变将不会在这些新创作的复制链接中反映出来。
本发明通过允许将这些树内或跨树链接创作为“虚拟链接(virtuallink)”使得这些链接与一个或多个站点的层次结构分离来解决所有这些问题。这允许作者规定他们想要从站点的另一个位置或者从另一个站点“移植(graft)”多少项或容器。这些项和容器随后作为对应于所创作的链接节点的子节点,而不必创作对应于这些项或容器的每个链接。
图2例示按照本发明在一个站点内的一个典型页面的示例性屏幕快照。页面200包括全局导航栏位210和节导航栏位220。通常,全局导航和节导航是站点的导航结构的呈现表示。页面的其余部分或者是页面的内容,或者是由浏览器提供的内容和功能用于与页面交互(例如,file(文件)下拉菜单)。
全局导航栏位210提供链接到站点的高层区域或子站点。在另一个实施例中,全局导航栏位210也可包括到其它站点的链接。在本发明的一个实施例中,包括在全局导航栏位210中的链接对应于导航结构的根节点的直接子节点。然而,其它节点可通过设置节点的元数据参数来作为有效的根节点操作。设置元数据参数导致节点的全局导航链接被用于该节点的子节点而不是用于与最顶端的节点相关联的那些节点。
节导航栏位220提供链接到站点的特定区域。在一个页面上包括节导航栏位220呈现一个区域的低层链接。包括低层链接允许全局导航栏位210集中于高层链接,同时使水平滚动(这在全局导航栏位210用这些链接填充时发生)最少。
从本发明的描述可理解,节导航和全局导航栏位提供一个可实施本发明的框架。然而,本发明同样可应用于不遵守这个模型的站点(例如,没有全局导航栏位或者使用独立风格的导航栏位)。
图3例示按照本发明一个包括一个树内链接的页面的示例性树导航结构。用其构造树结构310的元数据存储在服务器302的高速缓存304中。下面参考图5和6更详细地描述元数据的高速缓存。树结构310可在运行时间生成以产生站点的整个导航层次结构。
树结构310包括节点(例如,312和314)和节点之间的链接(例如,316和318)。通常,树结构310是按照站点的层次结构构造的,其中站点在根节点312处起源并且向下继续至较低的导航链接(例如,节链接330)。在一个实施例中,在层次结构中紧接在根节点312之下的节点对应于在当前页面314上呈现的全局链接320。
树结构310基于站点的层次结构,然而本发明还提供创作的链接诸如树内链接318。树内链接318不遵循站点的层次结构,但代之以提供一个节链接到站点的另一个节中另一个节点。
可将树内链接318的目的节点“移植”到当前页面314之下的树结构310之中。移植在两个区域提供一个不同于简单的URL(统一资源定位符)引用的不同链接。实际上,移植一个区域使被移植区域的根移到导航结构的目标区域之中,好象它是目标区域的一个子区域。因此,当通过目标区域遍历导航结构时,可到达被移植区域的子节点。在一个页面的栏位中目标区域的子节点的显示因此与目标区域的一个普通子节点一样工作。移植树内链接318的目的节点创建被移植的链接,它在没有在层次结构中物理地定位的情况下使目的节点成为当前页面314之下的逻辑层次结构的一部分。移植的优点是对导航结构的被移植部分的更新反映在整个导航结构中。
结合本发明的树结构310可启动许多操作。这些操作包括取当前节点(getcurrent),取父节点(getparent),取根节点(getroot)和取子节点(getchildren)。这些操作的每一个在运行时间生成树结构310时使用。在其它实施例中,这些操作可在不脱离本发明的精神和范围的情况下用其它名字而不是在这里描述的那些名字来表示。
取当前节点(getcurrent)操作返回对应于在站点内当前导航的页面的当前节点。取父节点(getparent)操作取当前节点并且返回当前节点的直接父节点。
对于取根节点(getroot)操作,使用一系列的取父节点(getparent)来爬树结构,直到到达具有一个规定节点是其自己的父节点为止。这允许不是最顶端的节点用作导航结构内的根节点。当用作根节点时,节点能够定义它自己的全局导航链接集合,它们可应用于层次结构中在该节点之下的页面。
对于取子节点(getchildren)操作,传入一个要求子节点信息的节点。随后找出该节点的子节点。在返回子节点之前,子节点的列表可按照伴随每个节点的元数据来剪裁。例如,将指定为不包括在导航中的、不具有让当前用户访问许可的或者当前未被安排为发布的子节点从由取子节点(getchildren)操作返回的子节点中剪裁掉。在另一个实施例中,对于一个到由同一实体管理的站点的创作的链接,检查“包括在导航中”的参数是不必要的。因为链接是明确地创作的,假定它应当在取子节点(getchildren)操作中被包括在子节点之中。
图4例示出了按照本发明的一个示例性树导航结构,它包括一个跨树链接到另一个站点。第一个站点由第一个树结构410表示。树结构410对应于存储在定位在服务器402上的高速缓存404中的元数据。第二个站点是由存储在第二个服务器(服务器430)上的第二个高速缓存(高速缓存432)中的元数据来表示。
与图3相似,每个树结构(410,440)包括由链接(例如,416,418,420)连接的节点(例如,412,414)。还包括其它创作的链接(跨树链接420)。跨树链接420表示从在定位在一个服务器上的站点的页面到定位在另一个服务器上的另一个站点的页面的链接。在另一个实施例中,可在同一服务器上而不是所示的两个独立的服务器上的两个独立的站点之间形成跨树链接420。
当一个跨树链接诸如跨树链接420链接到由与当前站点相同的实体管理的另一个站点时,则与树内链接418相似,将来自另一个站点的项和容器可被“移植”到当前站点。移植指建立一个被移植的链接,如上在图3的讨论中描述的。
另一种类型的跨树链接是外部链接,即到由不同于当前站点的实体管理的另一个站点的链接。外部链接不象虚拟链接那样容易使用,因为关于目的地的层次结构的信息是未知的。因此,询问一个特定的容器和子节点是无效的,因为目的站点不会为这样一个请求而被结构化。然而,在另一个实施例中,可请求关于目的站点的结构的信息,使得可创建一个虚拟层次结构链接。
图5例示按照本发明对应于导航结构的节点的示例性数据集合的方框图。每个节点具有相关联的节点数据500,而节点数据500包括元数据510、全局导航520和节导航530。全局导航530包括普通子节点表522和编辑的链接表524。同样,节导航530包括普通子节点表532和编辑的链接表534。
元数据510包括与节点数据500相关联的特定节点的参数。元数据510可包括一或多个包含参数,安排参数,和安全参数。一个包含参数当它被设置时使与该参数的相关联的节点“被包括在导航中”。安排参数允许网站的内容按照一个时间安排表发布。具有一个不是当前的时间安排参数的页面被阻止发布。安全参数可用于阻止未经授权的用户访问被禁止的页。使用元数据允许站点被“剪裁”,或者让页面被删除,按照元数据510包括的参数设置。
全局导航250包括包含在相关联的页面的全局导航栏位中的链接。在当前的实施例中,依照站点的层次结构生成的全局链接包括在普通子节点表522中,而创作的全局链接包括在创作的链接表524中。创作的链接包括树内链接、跨树链接以及由站点开发者创作的与依照站点结构所生成的那些链接相反的外部链接。在另一实施例中,链接不依照其栏位来分离。
节导航530包括包含在相关联的页面的节导航栏位中的链接。类似于全局导航520,依照站点的层次结构生成的节链接包括在普通子节点表532中,而创作的节链接包括在创作的链接表中。
在一个实施例中,在元数据510中的安全参数用于控制用户导航到具有限制访问权限资源的能力。当从站点的层次结构生成导航结构时,可将某些页面从站点中剪裁掉或者基于用户的身份使之对于访问站点的用户不可访问。某些用户可能无权访问所选择的页面或者站点的其它资源。对于另一个站点的被移植部分,可应用一组不同的权限。有权访问当前站点的用户可基于它们的身份而没有访问站点的被移植部分的权限。在一个实施例中,本发明在移植其它站点的部分时迁移其它站点的安全设置以维护资源的安全。
在另一个实施例中,与呈现节导航栏位和全局导航栏位时使用的其它数据分离地高速缓存节点数据500。
图6例示按照本发明的一个高速缓存和产生导航结构的示例性系统。系统600包括站点地图提供者602、区域接口604、页面接口606、外部链接接口608和对象工厂610。
站点地图提供者602使用先前描述的取当前节点(getcurrent)、取父节点(getparent)、取根节点(getroot)以及取子节点(getchildren)操作来生成分层导航结构。与直接访问主存服务的各部分来获取这一信息相反,对来自站点地图提供者602的请求的响应使用诸如区域接口604、页面接口606和外部链接接口608等接口来返回。这些接口是由对象工厂610生成的对象。
对象工厂610提供与站点呈现服务的实际交互并通过各种操作(例如,取链接(getlink))取数据。对象工厂随后将数据写到接口之一并将它返回给站点地图提供者602。接口由对象工厂610高速缓存。接口对应于导航对象,它们包括用于导航结构的节点的元数据和链接数据。通过使用与站点地图提供者602通信的接口,导航结构的构造和管理可与站点的呈现分离,或者远程地设置在一个独立的计算设备上。在另一个实施例中,不使用接口并且站点地图提供者602将它的请求直接提供给站点呈现服务。
在一个实施例中,系统600也用于高速缓存与导航结构的节点相关联的安全参数。在一个例子中,一个参数表示一个节点是否具有相同的权限,还是与其父节点相似地可由一个用户访问。本发明存储用于整个导航结构的这个信息,因而在呈现对应于节点的页面时减少重复的安全检查。
在另一个实施例中,站点地图提供者具有其自己的参数集合用于控制导航结构的生成。例如,一个忽略继承根参数(ignore inherit root parameter)使站点地图提供者602忽略一个中间节点是否用作根节点。在忽略中间根节点的情况下,为操作爬导航结构的整个高度。
在又一个实施例中,来自站点地图提供者602的请求(例如,取子节点(getchildren))的结果可被排序。结果可人工排序,其中开发者选择结果的顺序(例如,选择要在节导航栏位中显示的子节点的顺序),或者自动地按照与每个结果相关联的元数据排序。另外,在结果中返回的项的类型(例如,页面,授权的链接等)可不同地排序,或者按照不同的元数据。
图7例示按照本发明的一个页面的示例性屏幕快照,该页面包括用于与页面相关联导航的页面上编辑(on-page editing)。页面700与图2相似,包括全局导航栏位710和节导航栏位720。然而,页面700还包括在页编辑元素730和740。在页编辑元素730和740的图标和选择允许用户在观看页面同时编辑与页面相关联的导航。在另一个实施例中,在页编辑元素730和740向用户传送特定的用户界面用于编辑与页面相关联的导航(见下面的图8和9)。
图8例示按照本发明的一个用于编辑与站点的页面相关联的导航链接的示例性用户界面。用户界面800是基于web的UI,它允许开发者编辑导航链接。导航链接按照它们的标题、URL(统一资源定位符)、它们是否是创作的链接、它们的描述和它们的类型列表。其它实施例可按照不同的类别列出导航链接。用户界面可用于添加新链接、新链接类别或者改变与页面相关联的链接的顺序。
图9例示按照本发明的一个用于添加新导航链接到站点的页面的示例性用户界面。用户界面900提供栏位用于在页面上建立一个新导航链接。这些栏位包括标题栏位、说明、类型选择栏位、链接是外部还是内部的和用于它的URL的输入栏位,以及是否应当结合导航链接示出飞出。除用户界面900所示的栏位以外的不同栏位可用于其它实施例。
图10例示按照本发明的一个表示新链接的拖放的页面的示例性屏幕快照。页面1000与图2相似,包括全局导航栏位1010和节导航栏位1020。然而页面1010还包括拖放操作1030的描绘。拖放操作1030例示了结合本发明提供的在页编辑的能力。拖放操作1030对应于直接将一个链接的动态插入页面,同时在先前建立的页面链接之中排序该链接。其它实施例还包括删除链接和其它操作的在页编辑的能力。
图11例示按照本发明的一个用于排与站点的页面相关联的导航链接顺序的示例性用户界面。用户界面1100按照一个编号方案提供栏位用于排序与站点相关联的导航链接。以表示的顺序提供导航链接。链接的顺序通过改变与一个特定链接相关联的编号并且更新用户界面来提供。
图12例示按照本发明的一个用于选择在站点的导航内页面内容并且排序站点的页面的示例性用户界面。用户界面1200提供将一个区域或页面包括在站点的导航内的选择。使用这个选择允许页面和其它资源添加到导航或者从导航删除而不用实际删除资源。用户界面1200还用人工或自动排序选项两者提供对站点资源的排序。资源的显示顺序也是可选择的。其它实施例包括用于排序站点资源的其它栏位。
图13例示按照本发明的一个用于选择与站点的页面相关联的继承属性的示例性用户界面。用户界面1300包括一个用于站点的全局导航和节导航的继承属性的选择。继承属性规定父站点到一个页面的相同导航链接也应当用于该页面。在没有选择继承属性的情况下,一个页面可使用它自己的与其父无关的唯一一组导航链接。
上面的描述、例子和数据提供了本发明组成的制造和使用的完整描述。由于可以在不脱离本发明的精神和范围的情况下作出本发明的许多实施例,因此本发明驻留在本文所附的权利要求书中。