elefant/app-saasy

Elefant CMS 的 SaaS 辅助应用程序

安装: 13

依赖: 0

建议者: 0

安全: 0

星星: 4

关注者: 3

分支: 5

开放问题: 8

语言:JavaScript

类型:elefant-app

dev-master 2013-06-25 18:49 UTC

This package is auto-updated.

Last update: 2024-08-25 07:06:08 UTC


README

Saasy 是一个 Elefant 应用程序,它为构建定制的软件即服务(SaaS)应用程序提供粘合剂。它提供基本的客户和账户管理、Bootstrap 集成以及应用程序结构,以便您可以专注于创建 SaaS 应用程序的定制功能。

状态: 测试版

屏幕截图

Saasy Account management screen

安装

  1. 将应用程序放入您的 apps 文件夹。
  2. 将文件 apps/saasy/conf/config.php 复制到 conf/app.saasy.config.php 并在那里编辑设置。这里将是大部分定制发生的地方。
  3. 将文件 apps/saasy/conf/user_config.php 复制到 conf/app.user.config.php 以将用户注册、更新和配置文件屏幕链接到 Saasy 的处理程序。
  4. 将包含的 sample_bootstrap.php 复制到您网站的根目录中,并将其重命名为 bootstrap.php
  5. 将包含的 saasy.html 复制到您的 layouts 文件夹。
  6. 在全局 conf/config.php 中设置 default_handler"saasy/index",设置 default_layout"saasy",并设置 session_domain = top
  7. 转到工具 > SaaS 管理器以安装客户和账户的数据库模式。

注意: 还建议在全局 conf/config.php 中将 session_domain 设置更改为 top。这将确保子域之间的登录正常工作,因此 www.example.com 的登录也适用于 mysubdomain.example.com

待办事项

  • 更多文档/示例
  • 账单/订阅管理
  • 管理客户和账户的仪表板
  • 可定制的主题颜色

定制

Saasy 通过将您的应用程序钩接到其各种设置中而工作。您可能只需要编辑 conf/app.saasy.config.php 中的 Saasy 配置,而不需要直接编辑任何 Saasy 源文件。

相反,创建一个包含所有模型、视图模板和处理程序的第二级应用程序,并通过上述配置文件将 Saasy 指向它们。以下是一个典型 Saasy 设置的示例文件夹结构

apps/
	myapp/
		conf/
		handlers/
		models/
		views/
	saasy/
		conf/
		handlers/
		lib/
		models/
bootstrap.php (copied from apps/saasy/sample_bootstrap.php)
conf/
	app.saasy.config.php (copied from apps/saasy/conf/config.php)
layouts/
	saasy.html (copied from apps/saasy/saasy.html)

使用应用程序脚手架生成器

Saasy 向 Elefant 命令行工具添加了一个命令,您可以使用它自动生成应用程序的基本脚手架和配置文件。以下是命令期望的格式

./elefant saasy/app <appname> <title> [<section>, <section>]
  • <appname> 是您的应用程序文件夹的名称
  • <title> 是您的 SaaS 应用程序的标题
  • <section> 是您的应用程序的导航标签列表

例如,要创建一个名为 "Project Spot" 的基本应用程序,具有消息、任务、文件和维基的导航选项,您会说

./elefant saasy/app projectspot "Project Spot" Messages Tasks Files Wiki

这将创建一个预配置的 conf/app.saasy.config.php 以及您的应用程序的轮廓,包括模型、模式、处理程序和视图。

从这里开始,您需要编辑您的数据库模式,位于 apps/<appname>/conf/ 中,然后通过以下方式导入它

./elefant import-db apps/<appname>/conf/install_mysql.sql

请确保根据您的网站使用的数据库更改应用程序名称和模式文件。

向您的 SaaS 应用程序添加部分

要向您的 SaaS 应用程序添加新部分,在您的应用程序中创建一个具有以下布局的处理程序

<?php

// Prevent direct access to this handler
if (! saasy\App::authorize ($page, $tpl)) return;

// Your handler logic goes here

?>

如果您的处理程序名称是 myapp/reports,要将此包含在您的 SaaS 菜单中,请向 apps/saasy/conf/config.php[Sections] 部分添加以下行

reports[myapp/reports] = Reports

现在它将作为 "报告" 出现在您的 SaaS 应用程序菜单中。

添加自定义主题

要添加自定义主题,在您的应用程序中创建一个名为 theme.php 的处理程序,并包含以下内容

<?php

$page->add_style ('/apps/myapp/css/custom.css');

?>

接下来,创建一个文件 apps/myapp/css/custom.css,在其中添加您想要的任何自定义样式。请注意,Saasy 使用 Bootstrap 进行布局,因此您可以参考他们的网站了解类和元素的名称以进行样式设置。

最后,编辑配置并将 theme 设置指向我们新的处理器,如下所示

theme = myapp/theme

这样做是为了作为处理器,以便您可以为应用程序的需求包含任意数量的初始化。

设置 SaaS 应用程序的基 URL

由于我们不是直接访问我们的自定义应用程序,并且我们不希望所有 URL 都以 /saasy/ 开头,因此我们可以将 app_alias 设置设置为另一个名称,Saasy 会自动将其别名指向我们的应用程序。因此,如果我们想通过 URL /myapp 访问我们的 SaaS 应用程序,那么我们将设置 app_alias 如下所示

app_alias = myapp

获取当前客户 ID

为了使一位客户的数据与其他客户的数据分开,您需要在模型中添加一个客户字段来存储客户 ID。客户 ID 是一个整数值,您可以通过自定义应用程序获取

<?php

$customer_id = \saasy\App::customer()->id;

// do something with $customer_id

?>

您也可以通过调用 \saasy\App::customer() 来获取客户对象本身。

强制执行账户限制

Saasy 会查看您的应用程序以定义是否需要账户限制。这是通过将您的 conf/app.saasy.config.php 文件中的 limits 设置指向在您的应用程序中定义的方法调用来实现的。例如

limits = "myapp\Account::limits"

这对应于文件 apps/myapp/lib/Account.php 中的一个类,如下所示

<?php

namespace myapp;

class Account {
	/**
	 * Returns a list of account limits.
	 */
	public static function limits () {
		return array (
			1 => array (
				'name' => __ ('Basic'),
				'members' => 0 // no sub-accounts
			),
			2 => array (
				'name' => __ ('Standard'),
				'members' => 5 // up to 5 member accounts
			),
			3 => array (
				'name' => __ ('Pro'),
				'members' => -1 // unlimited members
			)
		);
	}
}

?>

请注意,数组键明确从 1 开始,这是因为 0 表示已禁用的账户。

使用 members 值在账户区域强制执行成员账户限制。还可以在此处添加额外的自定义限制。

从这里,您可以获取特定客户的限制,如下所示

<?php

// get the current customer object
$customer = saasy\App::customer ();

// get all limits for the current account level
$limits = saasy\App::limits ($customer->level);

// get a specific limit value, with default to -1 if not set
$member_limit = saasy\App::limit ($customer->level, 'members', -1);

?>

如您所见,这些方法使将限制集成到 SaaS 应用程序变得容易。