PageSourceSearch

https://www.textomap.com/student-login/

html textomap.com collected 2026-10-01 10:19:46 UTC 15,759 bytes, 282 lines download raw bytes

1<!DOCTYPE html>
2<html prefix="og: https://ogp.me/ns#">
3	<head>
vendor: 66 bytes, lines 3-4
3
4		<script src="https://www.recaptcha.net/recaptcha/api.js?render=
46LeuiLspAAAAACeY131qvj4K411sWhwO3YnaRQUR
vendor: 12 bytes, line 4
4"></script>
5<script type="text/javascript">
6    (function(c,l,a,r,i,t,y){
7        c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
8        t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
9        y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
10    })(window, document, "clarity", "script", "g4vonwmmsj");
11</script>
vendor: 1 bytes, line 11
11
12<script>
13window.$crisp = [];
14window.CRISP_WEBSITE_ID = "21e1a69a-5434-44de-acba-26b0eb500278";
15
16(function() {
17  var d = document;
18  var s = d.createElement("script");
19  s.src = "https://client.crisp.chat/l.js";
20  s.async = 1;
21  d.getElementsByTagName("head")[0].appendChild(s);
22})();
23
24// ADD THIS SAFETY HOOK:
25window.crisp_loaded = false;
26window.CRISP_READY_TRIGGER = function() {
27  window.crisp_loaded = true;
28  // Now it is safe for Crisp to manipulate the DOM
29};
30</script>
vendor: 1 bytes, line 30
30
31<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" crossorigin="anonymous" onerror="adBlockFunction()"></script>
vendor: 1 bytes, line 31
31
32<script>
33  	window.googletag = window.googletag || {cmd: []};
34  
35  	googletag.cmd.push(function() {
36        googletag.setConfig({
37      		singleRequest: true,
38      		collapseDiv: 'ON_NO_FILL',
39      		safeFrame: {
40            	allowOverlayExpansion: false,
41            	allowPushExpansion: false
42            }
43    	});
44
45    	googletag.defineSlot('/23372109308/create_map_ad_mobile', [[279, 260], [250, 250]], 'div-gpt-ad-1788434884720-0').addService(googletag.pubads());
46        
47        googletag.defineSlot('/23372109308/create_map_ad', [[576, 260], [300, 250]], 'div-gpt-ad-1788434462598-0').addService(googletag.pubads());
48        
49        googletag.defineSlot('/23372109308/create_map_question_mobile', [[327, 414], [300, 250]], 'div-gpt-ad-1788434955513-0').addService(googletag.pubads());
50        
51        googletag.defineSlot('/23372109308/create_map_question', [[720, 420], [728, 90]], 'div-gpt-ad-1788434923239-0').addService(googletag.pubads());
52    
53        googletag.enableServices();
54    });
55</script>
vendor: 1 bytes, line 55
55
56<script>
57	var adBlocker = false;
58	
59	function adBlockFunction(){
60		adBlocker = true;
61	}
62</script>
62
63		<meta name="viewport"  content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
64	    <meta charset="utf-8">
65		<meta name="description" content="Create interactive maps from any content. Text, images, AI prompts, questions, CSVs, and URLs all transform into maps instantly with Textomap."/>
66		<meta property="og:type" content="website" />
67	   	<meta property="og:title" content="Textomap | Generate Interactive Maps from Text, Images, Prompts & Questions" />
68		<meta property="og:description" content="Create interactive maps from any content. Text, images, AI prompts, questions, CSVs, and URLs all transform into maps instantly with Textomap."/>
69		<meta property="og:url" content="https://www.textomap.com/student-login/" />
70		<meta property="og:image" content="https://www.textomap.com/style/images-p/cover.jpg?1" />
71		<meta property="og:image:url" content="https://www.textomap.com/style/images-p/cover.jpg?1" />
72		<meta property="og:image:width" content="1200" />
73		<meta property="og:image:height" content="630" />
74		<link rel="shortcut icon" href="https://www.textomap.com/style/images-p/favicon.ico" type="image/x-icon">
75		<link rel="stylesheet" type="text/css" href="https://www.textomap.com/style/bootstrap.min.css"> 
76	  	<link rel="stylesheet" type="text/css" href="https://www.textomap.com/style/jquery-ui.min.css">
77		<noscript>
78    <style type="text/css">
79        #mainCtrl {display:none;}
80    </style>
81    <div class="noscriptmsg">
82    You don't have javascript enabled.
83    </div>
84</noscript>
85
86<link rel="preconnect" href="https://googleapis.com">
87<link rel="preconnect" href="https://gstatic.com" crossorigin>
88<link href="https://fonts.googleapis.com/css2?family=Figtree:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=IBM+Plex+Serif:ital,wght@1,500&display=swap" rel="stylesheet">
89
90<script src="https://www.textomap.com/js/libs/min.js"></script>
90
91
92<script src="https://accounts.google.com/gsi/client" async defer></script>
92
93
94<script type="text/javascript">
95var generalerrmsgh = "Something went wrong…";
96var generalerrmsg = "Please try again or refresh the page.";
97var ADD_LCTNS_PH = "Search and add locations";
98var ADD_LCTNS_BTN = "Add to Map";
99var ADD_LCTNS_TXT_BTN = "Assign to text";
100var ADD_LCTNS_TXT_BTN_M = "Assign";
101var shareToast = "Link has been copied to clipboard";
102var embedToast = "Code has been copied to clipboard";
103var appId = 529313177987750;
104var url = "https://www.textomap.com/";
105var dir = "/opt/bitnami/apache2/htdocs/textomap/app/";
106var twitterUrl = "https://twitter.com/intent/tweet?text=Textomap: Create interactive maps in one click,\n from any text you're reading or writing about.&url=";
107var linkedinUrl = "https://www.linkedin.com/sharing/share-offsite/?url=";
108var extensionId = "eojinpebehkmckmljpjpnmeomhndobja";
109var mapboxToken = "pk.eyJ1IjoicmFpam1hbiIsImEiOiJja3kydndsNnAwcGwxMm5wbm44emZ5eTlqIn0.cnP4sGjx9g_0RgfRbJZjpg";
110var staticMapUrl = "https://api.mapbox.com/styles/v1/mapbox/streets-v11/static/";
111var googleExportUrl = "https://www.google.com/maps/dir/?api=1";
112var mapLimit = "c81e728d9d4c2f636f067f89cc14862c";
113var sourceLimit = "eccbc87e4b5ce2fe28308fd9f2a7baf3";
114var embedPopover = "<div class='info1'>Your free map embed has been used.<br>Upgrade for unlimited embeds</div><a class='btn upgrade' href='/pricing' target='_self'>Upgrade</a>";
115var exportToastEnd = "Your CSV file was successfully downloaded";
116var exportToastStart = "Exporting map as CSV";
117var mapPublicToast = "👀 Your map is public<br><small>It will be visible to others</small>";
118var mapPrivateToast = "🔒 Your map is private<br><small>Embedded and shared maps are not visible</small>";
119var googleRecaptchaKey = "6LeuiLspAAAAACeY131qvj4K411sWhwO3YnaRQUR";
120var googleRecaptcha = "1";
121
122var isAndroid = navigator.userAgentData != undefined  && navigator.userAgentData.platform != undefined ? 
123navigator.userAgentData.platform.toLowerCase().indexOf("android") > -1 : false; //&& ua.indexOf("mobile");
124
125if(isAndroid) {
126	document.write('<meta name="viewport" content="width=device-width,height='+window.innerHeight+', initial-scale=1.0">');
127}
128
129var app = angular.module('app', ['ngAnimate', 'ngSanitize', 'ui.bootstrap']);
130
131app.config(function($locationProvider) {
132	$locationProvider.html5Mode(true);
133});
134
135app.value('$anchorScroll', angular.noop);
136
137app.run(function($window, $rootScope) {
138	$rootScope.offline = !navigator.onLine;
139    $window.addEventListener("offline", function() {
140    	$rootScope.$apply(function() {
141        	$rootScope.offline = true;
142      	});
143    }, false);
144
145    $window.addEventListener("online", function() {
146    	$rootScope.$apply(function() {
147        	$rootScope.offline = false;
148      	});
149    }, false);
150});
151</script>
151	
152<link rel="stylesheet" type="text/css" href="https://www.textomap.com/style/style.min.css?4.02">
153<script src="https://www.textomap.com/script.js?4.02"></script>
153		<link rel="stylesheet" type="text/css" href="https://www.textomap.com/style/mobilestyle.css">
154		<title>Textomap | Generate Interactive Maps from Text, Images, Prompts & Questions</title>
155	    <base href="/">
156	</head>
157	<body ng-app="app" ng-controller="appCtrl" id="appCtrl" ng-init="setMode(modes.GENERAL)" class="ng-cloak" ng-cloak
158	ng-show="isDataLoaded()">
159		<div class="education"> 
160    		<div ng-controller="headerCtrl" id="headerCtrl"> 
161            	<div class="qheadercnt home general no-border">
162               		<div class="left">
163                        <div class="logo home" ng-click="home()">
164    						<img>
165    					</div>
166                  	</div>
167 
168          		</div>
169           	</div>
170            <div id="studentLoginCtrl" ng-controller="studentLoginCtrl" class="modal fade in show" tabindex="-1" role="dialog" aria-hidden="false">
171            	<div class="modal-dialog">
172               		<div class="modal-content">
173               			<div class="modal-body">
174        					<h4>Login to Textomap</h4>
175        					<input type="text" ng-model="student.group" class="form-control" placeholder="Group name"
176        					ng-focus="hasError = false" autofocus strip-text/>
177        					<input type="text" ng-model="student.name" class="form-control" placeholder="Student name"
178        					ng-focus="hasError = false" strip-text/>
179        					<input type="text" ng-model="student.password" class="form-control" placeholder="Password"
180        					ng-focus="hasError = false" strip-text/>
181        					<div class="info2 red" ng-if="hasError">⚠️ One or more of the details you have entered is incorrect. Please try again or contact your educator</div>
182        				</div>
183        				<div class="modal-footer">
184        					<div class="btn" ng-click="login()">
185        						Login        						<div class="spinner" ng-show="loading"></div>
186        					</div>
187        					<div class="info1">Forgot one of the details above to sign in?<br>Contact your teacher or administrator</div>
188        				</div>
189               		</div>
190            	</div>
191            	 <div class="info1" ng-click="showLoginPopup()">Educator? Sign in here</div>
192            </div>          
193    	</div>
194    	<div id="blockCtrl" class="modal fade" tabindex="-1" role="dialog" class="ng-cloak" ng-cloak>
195	<div class="modal-dialog">
196		<div class="modal-content">
197			<div class="modal-header">
198                <span class="mask" ng-click="home()" ng-if="!isPage('/student-login/')"></span>
199			</div>
200			<div class="modal-body">
201				<img ng-src="https://www.textomap.com/style/images-p/logo.svg" ng-if="!isPage('/student-login/')" loading="lazy">
202				<h2>Your access has been blocked</h2>	
203				<div class="info1" ng-if="!isPage('/student-login/')">Our system has identified you as a risk.<br>This might happen when using a VPN or similar tools.<br>In order to use Textomap, please disable your VPN.<br><br>If you’re still unable to login, please contact us for help.</div>
204				<div class="info1" ng-if="isPage('/student-login/')">Our system has identified you as a risk.<br>This might happen when using a VPN or similar tools.<br>In order to use Textomap, please disable your VPN.<br><br>If you’re still unable to login, please ontact your teacher or administrator</div>
205    			<div class="btn" ng-click="contact('My account is blocked')" ng-if="!isPage('/student-login/')">Contact us</div>
206    			<div class="btn" data-dismiss="modal" ng-if="isPage('/student-login/')">Got it</div>
207    			<span class="credits" ng-if="!verifyCode">
208             		Please review our             		<a href='https://www.textomap.com/terms-of-use/' target='_self'>Terms of Use</a>
209             		and&nbsp;<a href='https://www.textomap.com/privacy-policy/' target='_self'>Privacy policy</a>
210             	</span>
211			</div>
212		</div>
213	</div>
214</div>    	<div id="loginCtrl" class="modal fade" tabindex="-1" role="dialog" ng-controller="loginCtrl" 
215class="ng-cloak" ng-cloak data-backdrop="static">
216	<div class="modal-dialog">
217		<div class="modal-content">
218			<div class="modal-header">
219				<img ng-if="isExtension()" class="left" ng-src="https://www.textomap.com/style/images/logo-white.svg" ng-click="openSite()">
220                <img ng-if="isExtension()" class="right" ng-click="close()" ng-src="https://www.textomap.com/style/images/close-white.svg">
221                <span ng-if="!isExtension()" class="mask" ng-click="close()"></span>
222			</div>
223			<div class="modal-body">
224    			<div class="left">
225        			<img ng-if="!isExtension()" ng-src="https://www.textomap.com/style/images-p/logo.svg">
226            		<span class="title-s">
227            			{{isFree ? 'Sign in to generate maps from images, websites and data files' : isMap ? 'Sign in to save and edit your maps' : isExtension() ? 'Sign in' : 
228            			isLimit ? 'Sign in and continue creating\nmaps free' : loginEmail ? 
229            			(showUserName ? 'Sign up with email' : 'Log in with email') : 
230            			verifyCode ? 'Check your mail for sign in code' : ''}}
231            		</span>		
232            		<div ng-show="!loginEmail && !verifyCode">
233                		<div class="p2" ng-click="loginEmail = true">Log in to your account or <a>sign up for free</a></div>	
234                		<div id="g_id_onload" data-client_id="447130360595-lesck67cmbe5ba129kg6bnmfs75pbkg2.apps.googleusercontent.com" 
235                		data-callback="onGoogleSignin" data-auto_prompt="false" data-use_fedcm_for_button="true"></div>
236						<div id="googleLoginBtn" class="loginBtn g_id_signin" data-shape="circle" data-theme="filled_blue" 
237						ng-attr-data-width="{{isMobile() ? 280 : 400}}"></div>
238                		<div class="btn loginBtn" ng-click="showLoginEmail()">Continue with E-Mail</div>
239            		</div>
240        			<div ng-if="loginEmail">
241        				<div class="info1">Email address</div>
242        				<input type="text" id="user.email" ng-model="user.email" class="form-control input-lg"
243        		      	placeholder="Enter your email" ng-focus="clearError(true)"
244    		      		ng-class="{'has-error': hasError}"/>
245    		      		<div ng-if="showUserName">
246    		      			<div class="info1">Your Name</div>
247            				<input type="text" id="user.name" ng-model="user.name" class="form-control input-lg" 
248            		      	placeholder="Enter first and last name" ng-focus="clearError(false)" strip-text
249        		      		ng-class="{'has-error': hasErrorName}"/>
250    		      		</div>
251        		      	<div class="btn loginBtn" ng-click="sendCode()">
252        		      		Continue        		      		<div class="spinner" ng-show="loading"></div>
253        		      	</div>
254        			</div>
255        			<div ng-show="verifyCode">
256        				<div class="info1">Enter your 6 digit sign in code</div>
257        				<input ng-repeat="i in [1, 2, 3, 4, 5, 6]" type="text" id="{{'code' + i}}" maxlength="1"
258        				class="form-control input-lg digit" required="true"
259        				ng-class="{'has-error': hasErrorCode}" ng-keyup="keyup($event)" ng-paste="paste($event)">
260        		      	<div class="btn loginBtn" ng-click="checkCode()">
261        		      		Sign in        		      		<div class="spinner" ng-show="loading"></div>
262        		      	</div>
263        		      	<div class="info2"><b>{{'Email was sent to %%EMAIL%%.'.replace('%%EMAIL%%', user.email)}}</b></div>
264        		      	<div class="info2">{{'Can’t find it? Check your spam folder. It may take a few minutes to arrive.'.replace('%%EMAIL%%', user.email)}}</div>
265        		      	<div class="btn-txt" ng-click="sendCode()">
266        		      		<div class="mask"></div>
267        		      		Resend code        		      	</div>
268        			</div>
269             		<span class="credits" ng-if="!verifyCode">
270             			By signing in to this website, you accept our             			<a href='https://www.textomap.com/terms-of-use/' target='_self'>Terms of Use</a>
271             			and&nbsp;<a href='https://www.textomap.com/privacy-policy/' target='_self'>Privacy policy</a><br>
272             			This site is protected by reCAPTCHA and the Google <a href="https://policies.google.com/privacy" target="_blank">Privacy Policy</a> and <a href="https://policies.google.com/terms" target="_blank">Terms of Service</a> apply.    
273             			<a class="btn white" ng-if="!loginEmail" href="https://www.textomap.com/student-login/" 
274             			target='_self'>Student? <b>Sign in here</b></a>     			
275             		</span>	
276             	</div>
277			</div>
278		</div>
279	</div>
280</div> 
281	</body>
282</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.