## page was renamed from zhArticleTemplate ##language:zh #pragma section-numbers on {{{ [PART I 第一部分] CHAPTER 1 INSTALLING ZOPE 3 安装ZOPE3 1.1 Requirements 需求 1.2 Installing from SVN 从SVN安装 1.3 Installing the Source Distribution 安装源代码发布版 1.3.1 Unpacking the Package 解压缩包 1.3.2 Building Zope 建立Zope 1.3.3 Creating a Zope Instance 创建一个Zope实例 1.3.4 Run Zope 运行Zope 1.4 Installing the Source Distribution on Windows without make 在Windows上采用非编译的方式安装源代码发布版 1.5 Installing the Binary Distribution 安装二进制发布版 CHAPTER 2 THE NEW WEB-BASED USER INTERFACE 第二章 新的基于WEB的用户接口 2.1 Getting comfortable with the ZMI 2.2 Help and Documentation 帮助和文档 2.3 The Scripter's World 脚本人员的世界 2.4 Software versus Content Space 软件vs内容空间 2.4.1 Content Space 内容空间 2.4.2 Software Space 软件空间 CHAPTER 3 INSTALL ZOPE PACKAGES 安装ZOPE软件包 3.1 Step I: Determining the Installation Directory 第一步:决定安装路径 3.2 Step II: Fetching the Wiki application from SVN 第二步:从SNV获得wiki应用程序 3.3 Step III: Registering the Package 第三步:注册软件包 3.4 Step IV: Confirm the Installation 第四步:确认安装 3.5 Step V: Add a Sample Wiki 第五步:添加一个示例Wiki CHAPTER 4 SETTING UP VIRTUAL HOSTING 设置虚拟主机 [PART II 第二部分] CHAPTER 5 THE ZOPE 3 DEVELOPMENT PROCESS ZOPE 3的开发过程 5.1 From an Idea to the Implementation 从想法到实现 5.1.1 Implementing new Components 实现新的组件 5.1.2 Fixing a bug 修正错误 5.2 Zope 3 Naming Rules 命名规则 5.2.1 Directory Hierarchy Conventions 目录层次约定 5.2.2 Python Naming and Formatting Conventions Python命名和格式化约定 5.2.3 ZCML Naming and Formatting Conventions ZCML命名和格式化约定 5.2.4 Page Template Naming and Formatting Conventions 页面模版命名和格式化约定 5.2.5 Test Writing Conventions 编写测试的约定 5.2.6 Why is Having and Following the Conventions Important? 为什么持有和遵守这些约定是重要的呢? CHAPTER 6 AN INTRODUCTION TO INTERFACES 介绍接口 6.1 Introduction 介绍 6.2 Advanced Uses 高级用途 6.3 Using Interfaces 使用接口 CHAPTER 7 THE COMPONENT ARCHITECTURE -- AN INTRODUCTION 组件架构-介绍 7.1 Services 服务 7.2 Adapters 适配器 7.3 Utilities 实用工具 7.4 Factories (Object Classes/Prototypes) 工厂(对象类/属性) 7.5 Presentation Components 表现组件 7.6 Global versus Local 全局vs局部 CHAPTER 8 ZOPE SCHEMAS AND WIDGETS (FORMS) ZOPE的模型和窗口部件(表单) 8.1 History and Motivation 历史和动机 8.2 Schema versus Interfaces 模型vs接口 8.3 Core Schema Fields 核心模型字段 8.4 Auto-generated Forms using the forms Package 使用表单软件包来自动生成表单 CHAPTER 9 INTRODUCTION TO ZCML 介绍ZCML CHAPTER 10 INTRODUCTION TO ZOPE'S I18N AND L10N SUPPORT 介绍ZOPE支持I18N和L10N的情况 10.1 History 历史 10.2 Introduction 介绍 10.3 Locales 本地 10.4 Messages and Message Catalogs 消息和消息目录 10.5 Internationalizing Message Strings 国际化消息字符串 10.5.1 Python Code Python代码 10.5.2 ZPT (Page Templates) ZPT(页面模版) 10.5.3 DTML 10.5.4 ZCML CHAPTER 11 META DATA AND THE DUBLIN CORE 元数据和DUBLIN核心 CHAPTER 12 PORTING APPLICATIONS FROM ZOPE 2 TO ZOPE 3 将应用从Zope2移植到Zope3上 12.1 Porting an Application by Redesign 通过重新设计来移植应用 12.2 Porting using compatibility layers and scripts 通过兼容性的层和脚本来移植 [PART III 第三部分] CHAPT ER 13 WRITING A NEW CONTENT OBJECT 编写一个新的内容对象 13.1 Step I: Preparation 第一步:准备 13.2 Step II: The Initial Design 第二步:初始化设计 13.3 Step III: Writing the interfaces 第三步:编写接口 13.4 Step IV: Writing Unit tests 第四步:编写单元测试 13.5 Step V: Implementing Content Components 第五步:实现内容组件 13.6 Step VI: Running Unit Tests against Implementation 第六步:对实现进行单元测试 13.7 Step VII: Registering the Content Components 第七步:注册内容组件 13.8 Step VIII: Configure some Basic Views 第八步:配置一些基本视图 13.9 Step IX: Registering the Message Board with Zope 第九步:在Zope中注册Message Board 13.10 Step X: Testing the Content Component 第十步:测试内容组件 CHAPTER 14 ADDING VIEWS 添加视图 14.1 Step I: Message Details View 详细消息视图 14.1.1 (a) Create Page Template 创建页面模版 14.1.2 (b) Create the Python-based View class 创建基于Python的视图类 14.1.3 (c) Registering the View 注册视图 14.1.4 (d) Testing the View 测试视图 14.2 Step II: Specifying the Default View 第二步:指定默认视图 14.3 Step III: Threaded Sub-Tree View 线索树型视图 14.3.1 (a) Main Thread Page Template 主线索页面模版 14.3.2 (b) Thread Python View Class 线索Python视图类 14.3.3 (c) Sub-Thread Page Template 子线索页面模版 14.3.4 (d) Register the Thread View 注册线索试视图 14.3.5 (e) Message Board Default View 留言板默认视图 14.4 Step IV: Adding Icons 第四步:添加图标 CHAPTER 15 CUSTOM SCHEMA FIELDS AND FORM 自定义模型字段和表单 15.1 Step I: Creating the Field 创建字段 15.1.1 (a) Interface 接口 15.1.2 (b) Implementation 实现 15.1.3 (c) Unit Tests 单元测试 15.2 Step II: Creating the Widget 创建窗口部件 15.2.1 (a) Implementation 实现 15.2.2 (b) Unit Tests 单元测试 15.3 Step III: Using the HTML Field 使用HTML字段 15.3.1 (a) Registering the Widget 注册窗口部件 15.3.2 (b) Adjusting the IMessage interface 调整IMessage接口 CHAPTER 16 SECURING COMPONENTS 安全组件 16.1 Step I: Delcarations of Permissions 声明权限 16.2 Step II: Using the Permissions 使用权限 16.3 Step III: Declaration of Roles 声明角色 16.4 Step IV: Assigning Roles to Principals 为主体分配角色 CHAPTER 17 CHANGING SIZE INFORMATION 改变尺寸信息 17.1 Step I: Implementation of the Adapter 实现适配器 17.2 Step II: Unit tests 单元测试 17.3 Step III: Registration 注册 CHAPTER 18 INTERNATIONALIZING A PACKAGE 国际化软件包 18.1 Step I: Internationalizing Python code 国际化Python代码 18.2 Step II: Internationalizing Page Templates 国际化页面模版 18.3 Step III: Internationalizing ZCML 国际化ZCML 18.4 Step IV: Creating Language Directories 创建语言目录 18.5 Step V: Extracting Translatable Strings 提取可翻译的字符串 18.6 Step VI: Translating Message Strings 翻译消息字符串 18.7 Step VII: Compiling and Registering Message Catalogs 编译并注册消息目录 18.8 Step VIII: Trying the Translations 尝试翻译 18.9 Step IX: Updating Translations on the Fly 在运行过程中更新翻译 [ PART IV 第四部分] CHAPTER 19 EVENTS AND SUBSCRIBERS 事件和订阅 19.1 Step I: Mail Subscription Interface 邮件订阅接口 19.2 Step II: Implementing the Mail Subscription Adapter 实现邮件订阅适配器 19.3 Step III: Test the Adapter 测试适配器 19.4 Step IV: Providing a View for the Mail Subscription 为邮件订阅提供一个视图 19.5 Step V: Message Mailer - Writing an Event Subscriber Message Mailer - 编写一个事件订阅器 19.6 Step VI: Testing the Message Mailer 测试Message Mailer 19.7 Step VII: Using the new Mail Subscription 使用新的邮件订阅 19.8 Step VIII: The Theory 原理 CHAPTER 20 APPROVAL WORKFLOW FOR MESSAGES 为消息增加工作流 20.1 Step I: Making your Message Workflow aware 明确你的工作流 20.2 Step II: Create a Workflow and its Supporting Components via the Browser 创建一个工作流和通过浏览器支持它的组件 20.3 Step III: Assigning the Workflow 分配工作流 20.4 Step IV: Testing the Workflow 测试工作流 20.5 Step V: Writing a nice "Review Messages" View for Message Boards 为Message Boards编写一个好的"Review Messages" 20.6 Step VI: Adjusting the Message Thread 调整消息线索 20.7 Step VII: Automation of Workflow and Friends creation 自动创建工作流和字段 20.8 The Theory 原理 CHAPTER 21 PROVIDING ONLINE HELP SCREENS 提供在线帮助屏幕 CHAPTER 22 OBJECT TO FILE SYSTEM MAPPING USING FTP AS EXAMPLE 使用FTP来演示映射文件系统对象 22.1 Step I: Plain Text Adapters 纯文本适配器 22.1.1 (a) The Interface 接口 22.1.2 (b) The Implementation 实现 22.1.3 (c) The Configuration 配置 22.2 Step II: The "Virtual Contents File" Adapter "虚拟内容文件"适配器 22.2.1 (a) The Interface 接口 22.2.2 (b) The Implementation 实现 22.2.3 (c) The Tests 测试 22.2.4 (d) The Configuration 配置 22.3 Step III: The IReadDirectory implementation 实现IReadDirectory 22.3.1 (a) The Implementation 实现 22.3.2 (b) The Tests 测试 22.3.3 (c) The Configuration 配置 22.4 Step IV: The Icing on the Cake -- A special Directory Factory 蛋糕上的糖衣 - 一个特殊的目录工厂 CHAPTER 23 AVAILABILITY VIA XML-RPC 经XML-RPC的可用性 23.1 Step I: Creating "Methods" XML-RPC Presentation Components 创建"方法"XML-RPC表现组件 23.2 Step II: Testing 测试 23.3 Step III: Configuring the new Views 配置新的视图 23.4 Step IV: Testing the Features in Action 在动作中测试特性 CHAPTER 24 DEVELOPING NEW SKINS 开发新皮肤 24.1 Step I: Preparation 准备 24.2 Step II: Creating a New Skin 创建一个新皮肤 24.3 Step III: Customizing the Base Templates 自定义基础模版 24.4 Step IV: Adding a Message Board Intro Screen 添加一个Message Board介绍屏幕 24.5 Step V: Viewing a List of all Message Board Posts 察看Message Board所有帖子列表 24.6 Step VI: Adding a Post to the Message Board 向Message Board发一个新贴 24.7 Step VII: Reviewing "pending" Messages 审核"未决"的消息 24.8 Step VIII: View Message Details 察看消息详情 24.9 Step IX: Replies to Messages 回复消息 [PART V 第五部分] CHAPTER 25 BUILDING AND STORING ANNOTATIONS 建立和存储注解 25.1 Introduction 介绍 25.2 Implementing an Alternative Annotations Mechanism 实现一个可选的注解机制 25.3 Step I: Developing the Interfaces 开发接口 25.4 Step II: The KeeperAnnotations Adapter KeeperAnnotations适配器 25.5 Step III: Unit Testing 单元测试 25.6 Step IV: Configuration of the KeeperAnnotations Component 配置KeeperAnnotations组件 25.7 Step V: Writing Functional Tests and Configuration 编写功能测试和配置 CHAPTER 26 NEW PRINCIPAL-SOURCE PLUG-INS 新的主要来源插件 26.1 Step I: Defining the interface 定义接口 26.2 Step II: Writing the tests 编写测试 26.3 Step III: Implementing the plug-in 实现插件 26.4 Step IV: Registering the Principal Source and Creating basic Views 注册主要来源并创建基本视图 CHAPTER 27 PRINCIPAL ANNOTATIONS 主要注解 27.1 Step I: The Principal Information Interface 主要信息接口 27.2 Step II: The Information Adapter 信息适配器 27.3 Step III: Registering the Components 注册组件 27.4 Step IV: Testing the Adapter 测试适配器 27.5 Step V: Playing with the new Feature 使用新特性 CHAPTER 28 CREATING A NEW BROWSER 创建一个新的浏览器 CHAPTER 29 REGISTRIES WITH GLOBAL UTILITIES 注册全局实用工具 29.1 Introduction 介绍 29.2 Step I: Defining the Interfaces 定义接口 29.3 Step II: Implementing the Utility 实现工具 29.4 Step III: Writing Tests 编写测试 29.5 Step IV: Providing a user-friendly UI 提供一个用户友好的UI 29.6 Step V: Implement ZCML Directives 实现ZCML指令 29.6.1 (a) Declaring the directive schemas 声明指令模型 29.6.2 (b) Implement ZCML directive handlers 实现ZCML指令处理 29.6.3 (c) Writing the meta-ZCML directives 编写元ZCML指令 29.6.4 (d) Test Directives 测试指令 29.7 Step VI: Setting up some Smiley Themes 设置一些表情符 29.8 Step VII: Integrate Smiley Themes into the Message Board 将表情符集成到Message Board中 29.8.1 (a) The Smiley Theme Selection Adapter 表情符选择适配器 29.8.2 (b) Using the Smiley Theme 使用表情符 CHAPTER 30 LOCAL UTILITIES 本地实用工具 30.1 Introduction to Local Utilities 介绍本地实用工具 30.2 Step I: Defining Interfaces 定义接口 30.3 Step II: Implementation 实现 30.4 Step III: Registrations 注册 30.5 Step IV: Views 视图 30.6 Step V: Working with the Local Smiley Theme 使用本地表情符 30.7 Step VI: Writing Tests 编写测试 CHAPTER 31 VOCABULARIES AND RELATED FIELDS/WIDGETS 词汇和相关的字段/窗口部件 31.1 Introduction 介绍 31.2 Step I: The Vocabulary and its Terms 词汇和术语 31.3 Step II: Testing the Vocabulary 测试词汇 31.4 Step III: The Default Item Folder 默认项目目录 CHAPTER 32 EXCEPTION VIEWS 异常视图 32.1 Introduction 介绍 32.2 Step I: Creating the Exception 创建一个异常 32.3 Step II: Providing an Exception View 提供一个异常视图 32.4 Step III: Testing the Exception View 测试异常视图 [PART VI 第六部分] CHAPTER 33 WRITING NEW ZCML DIRECTIVES 编写新的ZCML指令 33.1 Introduction 介绍 33.2 Step I: Developing the Directive Schema 开发指令模型 33.3 Step II: Implementing the Directive Handler 实现指令处理 33.4 Step III: Writing the Meta-Configuration 写元配置 33.5 Step IV: Testing the Directive 测试指令 CHAPTER 34 IMPLEMENTING A TALES NAMESPACES 实现一个补充名字空间 34.1 Step I: Defining the Namespace Interface 定义名字空间接口 34.2 Step II: Implementing the Namespace 实现名字空间 34.3 Step III: Testing the Namespace 测试名字空间 34.4 Step IV: Wiring the Namspace into Zope 3 将名字空间写入Zope3 34.5 Step VI: Trying the format Namespace 尝试格式化名字空间 CHAPTER 35 CHANGING TRAVERSAL BEHAVIOR 改变阻断行为 35.1 Step I: The Case-Insensitive Folder 案例非敏感文件夹 35.2 Step II: The Traverser 阻断 35.3 Step III: Unit Tests 单元测试 35.4 Step IV: Functional Tests 功能测试 CHAPTER 36 REGISTERING NEW WEBDAV NAMESPACES 注册新的WEBDAV名字空间 36.1 Introduction 介绍 36.2 Step I: Creating the Namespace Schema 创建名字空间模型 36.3 Step II: Implementing the IPhoto to IImage Adapter 将IPhoto实现为IImage适配器 36.4 Step III: Unit-Testing and Configuration 单元测试和配置 36.5 Step IV: Registering the WebDAV schema 注册WEBDAV模型 36.6 Step V: Functional Testing 功能测试 CHAPTER 37 USING TALES OUTSIDE OF PAGE TEMPLATES 在页面模版以外使用TALES 37.1 Introduction 介绍 37.2 The TALES Filesystem Runner TALES文件系统运行器 CHAPTER 38 DEVELOPING A NEW TALES EXPRESSION 开发一个新的TALES表达式 38.1 Step I: Implementing the SQL Expression 实现SQL表达式 38.2 Step II: Preparing and Implementing the tests 准备和实现测试 38.3 Step III: Trying our new expression in Zope 在Zope中尝试我们新的表达式 CHAPTER 39 SPACESUITS - OBJECTS IN HOSTILE ENVIRONEMENTS 太空服-敌对环境的对象 39.1 Getting started . . . 开始 39.2 The Labyrinth Game 迷宫游戏 39.3 Securing the Labyrinth 保护迷宫 CHAPTER 40 THE LIFE OF A REQUEST 一个请求的一生 40.1 What is a Request 什么是请求 40.2 Finding the Origin of the Request 找出请求的来源 [PART VII 第七部分] CHAPTER 41 WRITING BASIC UNIT TESTS 编写基本的单元测试 41.1 Implementing the Sample Class 实现Sample类 41.2 Writing the Unit Tests 编写单元测试 41.3 Running the Tests 运行测试 CHAPTER 42 DOCTESTS: EXAMPLE-DRIVEN UNIT CHAPTER 43 WRITING FUNCTIONAL TESTS 编写功能测试 43.1 The Browser Test Case 浏览器测试案例 43.2 Testing "ZPT Page" Views 测试"ZPT 页面"视图 43.3 Running Functional Tests 运行功能测试 CHAPTER 44 CREATING FUNCTIONAL DOCTESTS 创建功能性的DOCTESTS 44.1 Step I: Setting up the Zope 3 Environment 启动Zope3环境 44.2 Step II: Setting up TCP Watch 启动TCP监控 44.3 Step III: Recording a Session 记录一个会话 44.4 Step IV: Creating and Running the Test 创建并运行测试 CHAPTER 45 WRITING TESTS AGAINST INTERFACES 为接口编写测试 45.1 Introduction 介绍 45.2 The ISample Interface, Its Tests, and Its Implementations 测试和实现ISample接口 [PART VIII] APPENDIX A GLOSSARY OF TERMS APPENDIX B CREDITS APPENDIX C ATTRIBUTION-NODERIVS NONCOMMERCIAL LICENSE 1.0 APPENDIX D ZOPE PUBLIC LICENSE (ZPL) Index }}}