protected function RenderContent()
    {
        ?>
			<style type="text/css">
			.CodeMirror
			{
				border: dotted 1px #AAAAAA;
				line-height: 18px;
			}
			.CodeMirror .CodeMirror-linenumbers
			{
				width: 48px;
			}
			</style>
			<script type="text/javascript">
			// TODO: make this work with AJAX
			
			var CodeMirrorDefaultParameters = 
			{
				lineNumbers: true,
				matchBrackets: true,
				mode: "text/x-php",
				indentUnit: 4,
				indentWithTabs: true
			};
			
			function InitializeCodeMirror(id)
			{
				var txt = document.getElementById(id);
				if (txt.CodeMirrorInitialized) return;
				
				var edt = CodeMirror.fromTextArea(txt, CodeMirrorDefaultParameters);
				txt.CodeMirrorInitialized = true;
			}
			function tbs_OnClientTabChanged()
			{
				switch (tbs.SelectedTabID)
				{
					case "tabEncoder":
					{
						InitializeCodeMirror("txtEncoderCodeBlob");
						break;
					}
					case "tabDecoder":
					{
						InitializeCodeMirror("txtDecoderCodeBlob");
						break;
					}
					case "tabColumnRenderer":
					{
						InitializeCodeMirror("txtColumnRendererCodeBlob");
						break;
					}
					case "tabEditorRenderer":
					{
						InitializeCodeMirror("txtEditorRendererCodeBlob");
						break;
					}
				}
			}
			</script>
			<form method="POST">
				<?php 
        if ($this->CurrentObject != null) {
            echo "<input type=\"hidden\" name=\"tenanttype_ID\" value=\"" . $this->CurrentObject->ID . "\" />";
        }
        $fv = new FormView("fv");
        $fv->Items[] = new FormViewItemText("txtObjectName", "tenanttype_Title", "Title", $this->CurrentObject->Title);
        $fv->Items[0]->Required = true;
        $fv->Items[] = new FormViewItemMemo("txtObjectDescription", "tenanttype_Description", "Description", $this->CurrentObject->Description);
        $fv->Render();
        ?>
				<div class="Buttons">
					<input class="Button Default" type="submit" value="Save Changes" />
					<a class="Button" href="<?php 
        echo System::ExpandRelativePath("~/tenant-types");
        ?>
">Cancel</a>
				</div>
			</form>
			<?php 
    }
Exemplo n.º 2
0
    protected function RenderContent()
    {
        ?>
			<style type="text/css">
			.CodeMirror
			{
				border: dotted 1px #AAAAAA;
				line-height: 18px;
			}
			.CodeMirror .CodeMirror-linenumbers
			{
				width: 48px;
			}
			</style>
			<script type="text/javascript">
			// TODO: make this work with AJAX
			
			var CodeMirrorDefaultParameters = 
			{
				lineNumbers: true,
				matchBrackets: true,
				mode: "text/x-php",
				indentUnit: 4,
				indentWithTabs: true
			};
			
			function InitializeCodeMirror(id)
			{
				var txt = document.getElementById(id);
				if (txt.CodeMirrorInitialized) return;
				
				var edt = CodeMirror.fromTextArea(txt, CodeMirrorDefaultParameters);
				txt.CodeMirrorInitialized = true;
			}
			function tbs_OnClientTabChanged()
			{
				switch (tbs.GetSelectedTabID())
				{
					case "tabEncoder":
					{
						InitializeCodeMirror("txtEncoderCodeBlob");
						break;
					}
					case "tabDecoder":
					{
						InitializeCodeMirror("txtDecoderCodeBlob");
						break;
					}
					case "tabColumnRenderer":
					{
						InitializeCodeMirror("txtColumnRendererCodeBlob");
						break;
					}
					case "tabEditorRenderer":
					{
						InitializeCodeMirror("txtEditorRendererCodeBlob");
						break;
					}
				}
			}
			</script>
			<form method="POST">
				<?php 
        if ($this->CurrentDataType != null) {
            echo "<input type=\"hidden\" name=\"datatype_ID\" value=\"" . $this->CurrentDataType->ID . "\" />";
        }
        $tbs = new TabContainer("tbs");
        $tbs->OnClientTabChanged = "tbs_OnClientTabChanged();";
        $tbs->TabPages[] = new TabPage("tabGeneral", "General Information", null, null, null, function () {
            $fv = new FormView("fv");
            $fv->Width = "100%";
            $fv->Items[] = new FormViewItemText("txtDataTypeName", "datatype_Name", "Name", $this->CurrentDataType->Name);
            $fv->Items[0]->Required = true;
            $fv->Items[] = new FormViewItemMemo("txtDataTypeDescription", "datatype_Description", "Description", $this->CurrentDataType->Description);
            $fv->Render();
        });
        $tbs->TabPages[] = new TabPage("tabEncoder", "Encoder", null, null, null, function () {
            $ds = new Disclosure();
            $ds->Title = "Code";
            $ds->BeginContent();
            ?>
						<textarea id="txtEncoderCodeBlob" name="datatype_EncoderCodeBlob" style="width: 100%;" rows="20"><?php 
            echo $this->CurrentDataType->EncoderCodeBlob;
            ?>
</textarea>
						<?php 
            $ds->EndContent();
            /*
            $ds = new Disclosure();
            $ds->Title = "Preview";
            $ds->BeginContent();
            
            ?>
            <div class="FormView">
            	<div class="Field">
            		<label id="lblEncoderCodeBlobValue" for="txtEncoderCodeBlobValue">Value</label>
            		<input type="text" onchange="__EncoderCodeBlob_RefreshResult();" />
            	</div>
            	<div class="Field">
            		<label id="lblEncoderCodeBlobResult" for="txtEncoderCodeBlobResult">Result</label>
            		<span id="txtEncoderCodeBlobResult">&nbsp;</span>
            	</div>
            </div>
            <?php
            
            $ds->EndContent();
            */
        });
        $tbs->TabPages[] = new TabPage("tabDecoder", "Decoder", null, null, null, function () {
            $ds = new Disclosure();
            $ds->Title = "Code";
            $ds->BeginContent();
            ?>
						<textarea id="txtDecoderCodeBlob" name="datatype_DecoderCodeBlob" style="width: 100%;" rows="20"><?php 
            echo $this->CurrentDataType->DecoderCodeBlob;
            ?>
</textarea>
						<?php 
            $ds->EndContent();
        });
        $tbs->TabPages[] = new TabPage("tabColumnRenderer", "Column Renderer", null, null, null, function () {
            $ds = new Disclosure();
            $ds->Title = "Code";
            $ds->BeginContent();
            ?>
						<textarea id="txtColumnRendererCodeBlob" name="datatype_ColumnRendererCodeBlob" style="width: 100%;" rows="20"><?php 
            echo $this->CurrentDataType->ColumnRendererCodeBlob;
            ?>
</textarea>
						<?php 
            $ds->EndContent();
            $ds = new Disclosure();
            $ds->Title = "Preview";
            $ds->BeginContent();
            $ds->EndContent();
        });
        $tbs->TabPages[] = new TabPage("tabEditorRenderer", "Editor Renderer", null, null, null, function () {
            $ds = new Disclosure();
            $ds->Title = "Code";
            $ds->BeginContent();
            ?>
						<textarea id="txtEditorRendererCodeBlob" name="datatype_EditorRendererCodeBlob" style="width: 100%;" rows="20"><?php 
            echo $this->CurrentDataType->EditorRendererCodeBlob;
            ?>
</textarea>
						<?php 
            $ds->EndContent();
            $ds = new Disclosure();
            $ds->Title = "Preview";
            $ds->BeginContent();
            $ds->EndContent();
        });
        $tbs->SelectedTab = $tbs->TabPages[0];
        $tbs->Render();
        ?>
				<div class="Buttons">
					<input class="Button Default" type="submit" value="Save Changes" />
					<a class="Button" href="<?php 
        echo System::ExpandRelativePath("~/data-types");
        ?>
">Cancel</a>
				</div>
			</form>
			<?php 
    }
    protected function RenderContent()
    {
        ?>
			<form method="POST" onsubmit="return form_OnSubmit();">
				<?php 
        $tbs = new TabContainer("tbsTabs");
        $tbs->TabPages[] = new TabPage("tabGeneralInformation", "General Information", null, null, null, function () {
            $fv = new FormView();
            $fv->Items[] = new FormViewItemText("txtTenantURL", "tenant_URL", "Name", $this->Tenant->URL);
            $fvTenantTypes = array();
            $tenanttypes = TenantType::Get();
            foreach ($tenanttypes as $tenanttype) {
                $fvTenantType = new FormViewItemChoiceValue($tenanttype->Title, $tenanttype->ID);
                $fvTenantType->Selected = $this->Tenant != null && $this->Tenant->Type != null && $tenanttype->ID == $this->Tenant->Type->ID;
                $fvTenantTypes[] = $fvTenantType;
            }
            $fv->Items[] = new FormViewItemChoice("cboTenantType", "tenant_TypeID", "Type", null, $fvTenantTypes);
            $fv->Items[] = new FormViewItemBoolean("chkStatus", "tenant_Status", "Status", $this->Tenant->Status == TenantStatus::Enabled);
            $fvDataCenters = array();
            $datacenters = DataCenter::Get();
            foreach ($datacenters as $datacenter) {
                $fvDataCenter = new FormViewItemChoiceValue($datacenter->Title, $datacenter->ID);
                $fvDataCenter->Selected = $this->Tenant != null && $this->Tenant->DataCenters->Contains($datacenter);
                $fvDataCenters[] = $fvDataCenter;
            }
            $fv->Items[] = new FormViewItemChoice("cboDataCenter", "tenant_DataCenterIDs", "Data centers", null, $fvDataCenters, true);
            $fvPaymentPlans = array();
            $paymentplans = PaymentPlan::Get();
            foreach ($paymentplans as $paymentplan) {
                $fvPaymentPlan = new FormViewItemChoiceValue($paymentplan->Title, $paymentplan->ID);
                $fvPaymentPlan->Selected = $this->Tenant != null && $this->Tenant->PaymentPlan != null && $paymentplan->ID == $this->Tenant->PaymentPlan->ID;
                $fvPaymentPlans[] = $fvPaymentPlan;
            }
            $fv->Items[] = new FormViewItemChoice("cboPaymentPlan", "tenant_PaymentPlanID", "Payment plan", null, $fvPaymentPlans);
            $fv->Items[] = new FormViewItemDateTime("txtActivationDate", "tenant_BeginTimestamp", "Activation date", $this->Tenant != null ? $this->Tenant->BeginTimestamp : null, true);
            $fv->Items[] = new FormViewItemDateTime("txtTerminationDate", "tenant_EndTimestamp", "Termination date", $this->Tenant != null ? $this->Tenant->EndTimestamp : null, true);
            $fv->Items[] = new FormViewItemMemo("txtDescription", "tenant_Description", "Description", $this->Tenant->Description);
            $fv->Render();
        });
        $path = System::GetVirtualPath();
        if ($path[1] != "clone") {
            $tbs->TabPages[] = new TabPage("tabCustomProperties", "Custom Properties", null, null, null, function () {
                $lv = new ListView();
                $lv->Width = "100%";
                $lv->EnableAddRemoveRows = true;
                $lv->Columns = array(new ListViewColumn("lvcProperty", "Property"), new ListViewColumn("lvcDescription", "Description"), new ListViewColumn("lvcValue", "Value"));
                $properties = $this->Tenant->GetProperties();
                foreach ($properties as $property) {
                    $lv->Items[] = new ListViewItem(array(new ListViewItemColumn("lvcProperty", $property->Name), new ListViewItemColumn("lvcDescription", $property->Description), new ListViewItemColumn("lvcValue", null, null, function ($property) {
                        $property->DataType->RenderEditor($this->Tenant->GetPropertyValue($property), "Property_" . $property->ID);
                    }, $property)));
                }
                $lv->Render();
            });
            $tbs->TabPages[] = new TabPage("tabEnabledModules", "Enabled Modules", null, null, null, function () {
                $lv = new ListView();
                $lv->Width = "100%";
                $lv->EnableRowCheckBoxes = true;
                $lv->Columns = array(new ListViewColumn("lvcModule", "Module"), new ListViewColumn("lvcDescription", "Description"));
                $modules = Module::Get(null);
                foreach ($modules as $module) {
                    $item = new ListViewItem(array(new ListViewItemColumn("lvcModule", "<a href=\"" . System::ExpandRelativePath("~/tenant/modify/" . $this->Tenant->URL . "/modules/" . $module->ID . "\">" . $module->Title . "</a>", $module->Title)), new ListViewItemColumn("lvcDescription", $module->Description)));
                    $item->Checked = $this->Tenant->HasModule($module);
                    $lv->Items[] = $item;
                }
                $lv->Render();
            });
            $tbs->TabPages[] = new TabPage("tabGlobalObjects", "Global Objects", null, null, null, function () {
                $lv = new ListView();
                $lv->Width = "100%";
                $lv->EnableAddRemoveRows = true;
                $lv->Columns = array(new ListViewColumn("lvcObject", "Object"), new ListViewColumn("lvcDescription", "Description"), new ListViewColumn("lvcInstances", "Instances"));
                $objects = TenantObject::Get(null, $this->Tenant);
                foreach ($objects as $object) {
                    $lv->Items[] = new ListViewItem(array(new ListViewItemColumn("lvcObject", $object->Name), new ListViewItemColumn("lvcDescription", $object->Description), new ListViewItemColumn("lvcInstances", "<a href=\"" . System::ExpandRelativePath("~/tenant/modify/" . $this->Tenant->URL . "/objects/" . $object->ID . "/instances") . "\">" . $object->CountInstances() . "</a>")));
                }
                $lv->Render();
            });
        }
        $tbs->SelectedTab = $tbs->TabPages[0];
        $tbs->Render();
        ?>
				<div class="Buttons">
					<input class="Button Default" type="submit" value="Save Changes" />
					<a class="Button" onclick="return nav('/tenant');" href="<?php 
        echo System::ExpandRelativePath("~/tenant");
        ?>
">Cancel</a>
				</div>
			</form>
			<script type="text/javascript">
			var TenantManagementPageMode =
			{
				"Create": 1,
				"Modify": 2
			}
			<?php 
        if ($this->Mode == TenantManagementPageMode::Create) {
            echo "var Mode = TenantManagementPageMode.Create;";
        } else {
            if ($this->Mode == TenantManagementPageMode::Modify) {
                echo "var Mode = TenantManagementPageMode.Modify;";
            }
        }
        ?>
			function form_OnSubmit()
			{
				if (Mode == TenantManagementPageMode.Create)
				{
					var xhr = new XMLHttpRequest();
					var tenantName = document.getElementById('txtTenantURL').value;
					
					xhr.open("GET", "/API/Tenant.php?action=exists&q=" + tenantName, false);
					xhr.send(null);
					
					var obj = JSON.parse(xhr.responseText);
					if (obj.result == "success" && obj.exists)
					{
						Notification.Show("Tenant '" + tenantName + "' already exists", "Please specify a unique tenant name", "Error");
						return false;
					}
				}
				
				Notification.Show("Changes were saved successfully", "Taking you back to the Tenant Management page", "Success");
				return true;
			}
			</script>
			<?php 
    }