diff options
author | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2009-11-11 23:14:18 +0000 |
---|---|---|
committer | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2009-11-11 23:14:18 +0000 |
commit | fdd5b43d3c139cf2cbd1655d2efbfaf9032a5b5e (patch) | |
tree | bcd16e19fa4bbd45f956812be8b65f7a143b573f /branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp | |
parent | 3caf8614f25d6b1962e20331fdf423c863bc02f3 (diff) |
Moving 1.x branches
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@835145 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp')
9 files changed, 0 insertions, 611 deletions
diff --git a/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/AlertAggregator.html b/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/AlertAggregator.html deleted file mode 100644 index 8b472fd0fa..0000000000 --- a/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/AlertAggregator.html +++ /dev/null @@ -1,330 +0,0 @@ -<html> -<!-- - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - --> -<head> -<title>Apache Tuscany Alert Aggregator Sample</TITLE> - -<script type="text/javascript"> - //var djConfig = {isDebug: true,debugContainerId: "dojoDebug" }; - //djConfig.debugAtAllCosts = true; - </script> - -<script type="text/javascript" src="dojo/dojo/dojo.js"> - </script> -<script type="text/javascript" src="dojo/dijit/dijit.js"> - </script> - -<script type="text/javascript"> - dojo.require("dijit.form.Button"); - dojo.require("dojo.rpc.JsonService"); - </script> - -<link rel="stylesheet" type="text/css" href="style.css" /> -</head> - -<body onload="getAlertSources()"> - -<script type="text/javascript"> - - // The proxy for the alert and alertsources services running in Tuscany - var alertsService = new dojo.rpc.JsonService("AlertsServiceJSONRPC?smd"); - var alertSourcesService = new dojo.rpc.JsonService("AlertsSourcesServiceJSONRPC?smd"); - - // If you want to put an HTTP sniffer in the way to look at the JSONROPC packets you'll - // need to edit the target address of the service in the smd. The only way to do this easily - // is to read an smd from disc rather than generate one. There are two smds provided for this - //var alertsService = new dojo.rpc.JsonService("service.smd"); - //var alertSourcesService = new dojo.rpc.JsonService("sources.smd"); - - // The global list of alerts sources - var alertSourceList = null; - - // The global list of alerts - var alertList = null; - - // the constructor for entries on the alert source list - function alertSourceType(name,id,address,feedAddress,feedType,popUsername,popPassword,popServer,lastChecked,javaClass) { - this.name = name; - this.id = id; - this.address = address; - this.feedAddress = feedAddress; - this.feedType = feedType; - this.lastChecked = lastChecked; - this.javaClass = "org.apache.tuscany.sca.demos.aggregator.types.impl.SourceTypeImpl"; - - } - - function errorCallback(result, error, id) { - var resultsNode = document.getElementById("errors"); - // There seems to be a problem somewhere as I should be able to get the error - // details but all I can actually get is the Id from the error message - // resultsNode.innerHTML = "there was an error! message id = " + " error code = " + result.error.code + " error message = " + result.error.msg ; - resultsNode.innerHTML = "An error was returned by the server. Message id = " + result.id; - } - - // Generate the alert sources table - function getAlertSources() - { - response = alertSourcesService.getAlertSources("Dojo"); - response.addCallbacks(getAlertSourcesCallback, errorCallback); - - getAlerts(); - } - - function getAlertSourcesCallback(result) { - var resultsNode = document.getElementById("alertSourcesTable"); - if ( result.error != null ) { - resultsNode.innerHTML = result.error; - } else { - // stash away the source list for when we come to edit it - alertSourceList = result.source.list; - - // put out the html - var text = "" - var nextSourceId = 0 - for (var i in result.source.list){ - var source = result.source.list[i]; - - text = text + "<table>"; - text = text + "<TR CLASS='source_" + source.id + "' >"; - text = text + " <TD CLASS='source_name clickable' ONCLICK=\"displayAlert('" + source.address + "')\">"; - text = text + " <IMG SRC='rss.png'/> " + source.name; - text = text + " </TD>"; - text = text + " <TD CLASS='clickable link' ONCLICK=\"showEditSource('" + source.id + "')\">Edit</TD>"; - text = text + " <TD CLASS='clickable link' ONCLICK=\"deleteSource('" + source.id + "')\">Delete</TD>"; - text = text + "</TR>"; - text = text + "<TR ID='edit_source_" + source.id + "' CLASS='hidden source_" + source.id + "'>"; - text = text + " <TD COLSPAN='3'>"; - text = text + " <TABLE CLASS='sourceDetailsTable'>"; - text = text + " <TR>"; - text = text + " <TD>Source name:</TD>"; - text = text + " <TD>"; - text = text + " <INPUT ID='source_" + source.id + "_name' TYPE='TEXT' SIZE='50' VALUE='" + source.name + "'/>"; - text = text + " </TD>"; - text = text + " </TR>"; - text = text + " <TR>"; - text = text + " <TD>Source address:</TD>" - text = text + " <TD>"; - text = text + " <INPUT ID='source_" + source.id + "_address' TYPE='TEXT' SIZE='50' VALUE='" + source.address + "'/>"; - text = text + " </TD>"; - text = text + " </TR>"; - text = text + " <TR>"; - text = text + " <TD>"; - text = text + " <INPUT ID='source_" + source.id + "_type' TYPE='HIDDEN' VALUE='" + source.id + "'/>"; - text = text + " <INPUT TYPE='BUTTON' VALUE='Update' ONCLICK=\"updateSource('" + source.id + "')\"/>"; - text = text + " <INPUT TYPE='BUTTON' VALUE='Cancel' ONCLICK=\"hideEditSource('" + source.id + "')\"/>"; - text = text + " </TD>"; - text = text + " </TR>"; - text = text + " </TABLE>"; - text = text + " </TD>"; - text = text + "</TR>"; - - nextSourceId = eval(source.id); - } - - nextSourceId = nextSourceId + 1; - - text = text + "<TR CLASS='source_" + nextSourceId + "'>"; - text = text + " <TD COLSPAN='4' CLASS='clickable link' ONCLICK=\"showAddNewSource('" + nextSourceId + "')\">Add new Alert Source</TD>"; - text = text + "</TR>"; - text = text + "<TR ID='add_source_" + nextSourceId + "' CLASS='hidden source_" + nextSourceId + "'>"; - text = text + " <TD COLSPAN='4'>"; - text = text + " <TABLE CLASS='sourceDetailsTable'>"; - text = text + " <TR>"; - text = text + " <TD>Source name:</TD>"; - text = text + " <TD>"; - text = text + " <INPUT ID='source_" + nextSourceId + "_name' TYPE='TEXT' SIZE='50'>"; - text = text + " </TD>"; - text = text + " </TR>"; - text = text + " <TR>"; - text = text + " <TD>Source address:</TD>"; - text = text + " <TD>"; - text = text + " <INPUT ID='source_" + nextSourceId + "_address' TYPE='TEXT' SIZE='50'>"; - text = text + " </TD>"; - text = text + " </TR>"; - text = text + " <TR>"; - text = text + " <TD>Source type:</TD>"; - text = text + " <TD>"; - text = text + " <SELECT ID='source_" + nextSourceId + "_type' ONCHANGE=\"showSourceType('" + nextSourceId + "')\">"; - text = text + " <OPTION value='rss' selected='selected'>RSS/Atom feed</OPTION>"; - text = text + " </SELECT>"; - text = text + " </TD>"; - text = text + " </TR>"; - text = text + " <TR ID='add_rss_source'>"; - text = text + " <TD COLSPAN='2'>"; - text = text + " <TABLE CLASS='sourceDetailsTable'>"; - text = text + " <TR>"; - text = text + " <TD>Feed address:</TD>"; - text = text + " <TD>"; - text = text + " <INPUT ID='source_" + nextSourceId + "_feedAddress' TYPE='TEXT' SIZE='50'/>"; - text = text + " </TD>"; - text = text + " </TR>"; - text = text + " </TABLE>"; - text = text + " </TD>"; - text = text + " </TR>"; - text = text + " <TR>"; - text = text + " <TD>"; - text = text + " <INPUT TYPE='BUTTON' VALUE='Add' ONCLICK=\"addSource('" + nextSourceId + "')\">"; - text = text + " <INPUT TYPE='BUTTON' VALUE='Cancel' ONCLICK=\"hideAddNewSource('" + nextSourceId + "')\">"; - text = text + " </TD>"; - text = text + " </TR>"; - text = text + " </TABLE>"; - text = text + " </TD>"; - text = text + "</TR>"; - text = text + "</table>"; - - resultsNode.innerHTML = text; - } - } - - function showEditSource(sourceid) - { - document.getElementById("edit_source_"+sourceid).className = "source_"+sourceid; - } - - function hideEditSource(sourceid) - { - document.getElementById("edit_source_"+sourceid).className = "hidden source_"+sourceid; - } - - function updateSource(sourceid) - { - hideEditSource(sourceid); - var source = getSource(sourceId); - alertSourcesService.updateAlertSource(source); - getAlertSources(); - } - - function deleteSource(sourceid) - { - alertSourcesService.removeAlertSource(sourceid); - getAlertSources(); - } - - function showAddNewSource(sourceid) - { - document.getElementById("add_source_"+sourceid).className = "source_"+sourceid; - } - - function hideAddNewSource(sourceid) - { - document.getElementById("add_source_"+sourceid).className = "hidden source_"+sourceid; - } - - function addSource(sourceid) - { - hideAddNewSource(sourceid); - var source = getSource(sourceid); - alertSourcesService.addAlertSource(source); - - // wait a little before getting the list back from the server - setTimeout("getAlertSources()",1250); - } - - function getSource(sourceid) - { - var source = alertSourceList[sourceid]; - - if ( source == null ){ - source = new alertSourceType("name","id","address","feedAddress","feedType","popUsername","popPassword","popServer","lastChecked","javaClass"); - alertSourceList[sourceid] = source; - } - - source.name = document.getElementById("source_"+sourceid+"_name").value; - source.id = sourceid; - source.address = document.getElementById("source_"+sourceid+"_address").value; - var typeElem = document.getElementById("source_"+sourceid+"_type"); - source.feedType = typeElem.options[typeElem.selectedIndex].value; - - if(source.feedType=="rss") - { - source.feedAddress = document.getElementById("source_"+sourceid+"_feedAddress").value; - - } - else if(source.feedType=="pop") - { - source.popServer = document.getElementById("source_"+sourceid+"_popServer").value; - source.popUsername = document.getElementById("source_"+sourceid+"_popUsername").value; - source.popPassword = document.getElementById("source_"+sourceid+"_popPassword").value; - } - return source; - } - - // Generate the alerts table - function getAlerts() - { - response = alertsService.getAllNewAlerts("Dojo"); - response.addCallbacks(getAlertsCallback, errorCallback); - } - - function getAlertsCallback(result) { - var resultsNode = document.getElementById("alertsTable"); - if ( result.error != null ) { - resultsNode.innerHTML = result.error; - } else { - alertList = result.alert.list; - var text = "" - for (var i in result.alert.list){ - var alert = result.alert.list[i]; - - text = text + "<table>"; - text = text + "<TR class='source_" + alert.sourceId + " clickable' onclick=\"displayAlert('" + alert.address + "')\">"; - text = text + " <TD class='alert_text'>"; - text = text + " <SPAN id='" + alert.id + "' class='unread_title'>" + alert.title + "</SPAN>"; - text = text + " <SPAN class='summary'> - " + alert.summary.substring(0, 80) + "...</SPAN>"; - text = text + " </TD>"; - text = text + " <TD>"; - text = text + alert.date; - text = text + " </TD>" - text = text + "</TR>" - text = text + "</table>"; - } - - resultsNode.innerHTML = text; - } - } - - - - function displayAlert(url) - { - document.getElementById("alertData").innerHTML="<IFRAME CLASS='alert_data' SRC='"+url+"'/>"; - window.location="#data"; - return; - } - - - - </script> - -<h1 id="top">Apache Tuscany Alert Aggregator Demo</h1> -<div id="errors"></div> -<p>Alert Sources<span id="refreshSources"></span>:</p> -<!--input type="button" value="getSources" onclick="getAlertSources()"/--> -<div id="alertSourcesTable">Refreshing...</div> -<p /><input type="button" value="Refresh" onclick="getAlerts()" /> -<p /> -<div id="alertsTable">Refreshing...</div> -<p><a id="data" HREF="#top">Back to top</a></p> -<div id="alertData"></div> -<p /> -<div id="dojoDebug"></div> - -</body> -</html> diff --git a/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/META-INF/sca-contribution.xml b/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/META-INF/sca-contribution.xml deleted file mode 100644 index 09b7cce2b4..0000000000 --- a/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/META-INF/sca-contribution.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -* Licensed to the Apache Software Foundation (ASF) under one -* or more contributor license agreements. See the NOTICE file -* distributed with this work for additional information -* regarding copyright ownership. The ASF licenses this file -* to you under the Apache License, Version 2.0 (the -* "License"); you may not use this file except in compliance -* with the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, -* software distributed under the License is distributed on an -* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -* KIND, either express or implied. See the License for the -* specific language governing permissions and limitations -* under the License. ---> - -<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0" - xmlns:sample="http://sample"> - <deployable composite="sample:FeedAggregator"/> -</contribution> - diff --git a/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/WEB-INF/geronimo-web.xml b/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/WEB-INF/geronimo-web.xml deleted file mode 100644 index 37334803cb..0000000000 --- a/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/WEB-INF/geronimo-web.xml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. ---> -<web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-2.0" - xmlns:d="http://geronimo.apache.org/xml/ns/deployment-1.2"> - <d:environment> - <d:moduleId> - <d:groupId>org.apache.tuscany.sca</d:groupId> - <d:artifactId>demo-alert-aggregator-webapp</d:artifactId> - <d:version>1.5.1-SNAPSHOT</d:version> - <d:type>war</d:type> - </d:moduleId> - <!-- TUSCANY-2622 --> - <d:hidden-classes> - <d:filter>org.apache.axiom</d:filter> - <d:filter>org.apache.axis2</d:filter> - <d:filter>org.apache.commons</d:filter> - <d:filter>org.jdom</d:filter> - </d:hidden-classes> - </d:environment> -</web-app> diff --git a/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/WEB-INF/web.xml b/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index a81165e1b4..0000000000 --- a/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> -<!-- - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. ---> - -<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web -Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> -<web-app> - - <display-name>Apache Tuscany Alert Aggregator Demo</display-name> - - <filter> - <filter-name>tuscany</filter-name> - <filter-class>org.apache.tuscany.sca.host.webapp.TuscanyServletFilter</filter-class> - </filter> - - <filter-mapping> - <filter-name>tuscany</filter-name> - <url-pattern>/*</url-pattern> - </filter-mapping> - - <welcome-file-list id="WelcomeFileList"> - <welcome-file>AlertAggregator.html</welcome-file> - </welcome-file-list> - -</web-app> diff --git a/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/pop.png b/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/pop.png Binary files differdeleted file mode 100644 index 1cf1df24a7..0000000000 --- a/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/pop.png +++ /dev/null diff --git a/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/rss.png b/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/rss.png Binary files differdeleted file mode 100644 index b3c949d224..0000000000 --- a/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/rss.png +++ /dev/null diff --git a/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/service.smd b/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/service.smd deleted file mode 100644 index 3c6b6c9b12..0000000000 --- a/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/service.smd +++ /dev/null @@ -1 +0,0 @@ -{"SMDVersion":".1","objectName":"AlertsService","serviceType":"JSON-RPC","serviceURL":"http://localhost:8085/sample-feed-aggregator/services/AlertsServiceJSONRPC","methods":[{"name":"getAllNewAlerts","parameters":[{"name":"param0","type":"STRING"}]}]} diff --git a/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/sources.smd b/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/sources.smd deleted file mode 100644 index b5f1824363..0000000000 --- a/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/sources.smd +++ /dev/null @@ -1 +0,0 @@ -{"SMDVersion":".1","objectName":"AlertsSourcesService","serviceType":"JSON-RPC","serviceURL":"http://localhost:8081/sample-feed-aggregator/services/AlertsSourcesServiceJSONRPC","methods":[{"name":"getAlertSources","parameters":[{"name":"param0","type":"STRING"}]},{"name":"getAlertSource","parameters":[{"name":"param0","type":"STRING"}]},{"name":"updateAlertSource","parameters":[{"name":"param0","type":"STRING"}]},{"name":"addAlertSource","parameters":[{"name":"param0","type":"STRING"}]},{"name":"removeAlertSource","parameters":[{"name":"param0","type":"STRING"}]}]} diff --git a/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/style.css b/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/style.css deleted file mode 100644 index f5bbf23379..0000000000 --- a/branches/sca-java-1.5.1/demos/alert-aggregator-webapp/src/main/webapp/style.css +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -p,table,li,h1,h2,h3 -{ -font-family: verdana, arial, 'sans serif'; -} - -p, h1, h2, h3, table, li, hr -{ -margin-left: 10pt; -} - -table -{ -border-color: black; -border-collapse: separate; -border-spacing: 0px 1px; - -margin-right: 10pt; -margin-left: 10pt; -width: 800px; -} - -.sourceDetailsTable -{ -width: 600px; -} - -tr, td -{ -margin-left: 0pt; -margin-right: 0pt; -padding-left: 10pt; -font-size: 90%; -} - -p,li,th -{ -font-size: 90%; -margin-left: 10pt; -} - -pre -{ -margin-left: 10pt; -} - -body -{ -#ffffff; -} - -h1,h2,h3,hr -{ -color: firebrick; -} - -a:link {COLOR: firebrick;} -a:visited {COLOR: firebrick;} -a:active {COLOR: navy;} - -.link -{ -COLOR: firebrick; -text-decoration: underline; -} - -.clickable -{ -cursor: pointer -} - -.unread_title -{ -font-weight: bold; -} - -.read_title -{ -font-weight: normal; -} - -.summary -{ -color: DimGrey; -} - -.hidden -{ -display: none; -} - -.source_name -{ -width: 600px; -} - -.alert_text -{ -width: 600px; -} - -.alert_data -{ -margin-left: 10px; -width: 800px; -height: 800px; -} - -.source_0 -{ -background-color: LightGreen; -} - -.source_1 -{ -background-color: LightSkyBlue; -} - -.source_2 -{ -background-color: Khaki; -} - -.source_3 -{ -background-color: LightPink; -} - -.source_4 -{ -background-color: Orange; -} - -.source_5 -{ -background-color: LightCoral; -} - -.source_6 -{ -background-color: Orchid; -} - -.source_7 -{ -background-color: Peru; -} - -.source_8 -{ -background-color: SpringGreen; -} - -.source_9 -{ -background-color: LightGrey; -} - |