mirror of
https://bitbucket.org/wisemapping/wisemapping-frontend.git
synced 2024-12-25 12:53:48 +01:00
Merge branch 'develop'
This commit is contained in:
commit
7eda3bab2b
@ -6,7 +6,7 @@ WiseMapping Front extracts all the UI related aspects in this repository. You wi
|
||||
|
||||
* Web2D: Lighway abstraction over SVG for chart renderding.
|
||||
* Mindplot: Pure vanilla ES6 classes responsible for providing mindmap rendering and edition capabilities.
|
||||
* Webapp: REACT application that encompass the whole midnmap adminitraction experience.
|
||||
* Webapp: REACT application that encompass the whole midnmap edition experience.
|
||||
|
||||
## Getting started
|
||||
|
||||
@ -29,7 +29,7 @@ You can run these for all packages by running it from the root folder. Alternati
|
||||
|
||||
### build
|
||||
|
||||
> Production build
|
||||
> Production builds
|
||||
|
||||
`yarn build`
|
||||
|
||||
@ -72,4 +72,4 @@ A workaround for this is to run the tests using docker. Make sure you have docke
|
||||
|
||||
Run snapshot tests: `docker-compose -f docker-compose.snapshots.yml up`
|
||||
If anything changed, and the change was intentional, update the snapshots and then commit the new images to source control.
|
||||
Update snapshots: `docker-compose -f docker-compose.snapshots.update.yml up`
|
||||
Update snapshots: `docker-compose -f docker-compose.snapshots.update.yml up`
|
||||
|
1
packages/editor/images/info.svg
Normal file
1
packages/editor/images/info.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M0 0h24v24H0z" fill="none"/><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"/></svg>
|
After Width: | Height: | Size: 253 B |
@ -19,8 +19,8 @@
|
||||
"@babel/preset-env": "^7.16.11",
|
||||
"@babel/preset-react": "^7.16.7",
|
||||
"@formatjs/cli": "^4.8.1",
|
||||
"@types/react": "^17.0.0",
|
||||
"@types/react-dom": "^17.0.0",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2",
|
||||
"@typescript-eslint/eslint-plugin": "^4.8.1",
|
||||
"@typescript-eslint/parser": "^4.8.1",
|
||||
"clean-webpack-plugin": "^4.0.0",
|
||||
@ -35,7 +35,6 @@
|
||||
"eslint-plugin-react-hooks": "^4.2.0",
|
||||
"html-webpack-plugin": "^5.5.0",
|
||||
"prettier": "^2.2.1",
|
||||
"react": "^17.0.0",
|
||||
"ts-loader": "^8.0.11",
|
||||
"ts-node": "^9.0.0",
|
||||
"typescript": "^4.1.2",
|
||||
@ -49,8 +48,8 @@
|
||||
"styled-components": "^5.2.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^17.0.0",
|
||||
"react-dom": "^17.0.0",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2",
|
||||
"react-intl": "^5.24.3"
|
||||
}
|
||||
}
|
||||
}
|
@ -20,6 +20,7 @@ import TopicNoteSvg from '../../../images/topic-note.svg';
|
||||
import TopicLinkSvg from '../../../images/topic-link.svg';
|
||||
import TopicRelationSvg from '../../../images/topic-relation.svg';
|
||||
import ExportSvg from '../../../images/export.svg';
|
||||
import InfoSvg from '../../../images/info.svg';
|
||||
import PublicSvg from '../../../images/public.svg';
|
||||
import HistorySvg from '../../../images/history.svg';
|
||||
import PrintSvg from '../../../images/print.svg';
|
||||
@ -30,7 +31,7 @@ import { HeaderContainer, ToolbarButton, ToolbarButtonExt, ToolbarRightContainer
|
||||
import ActionButton from '../action-button';
|
||||
import { EditorRenderMode } from '@wisemapping/mindplot';
|
||||
|
||||
export type ToolbarActionType = 'export' | 'publish' | 'history' | 'print' | 'share';
|
||||
export type ToolbarActionType = 'export' | 'publish' | 'history' | 'print' | 'share' | 'info';
|
||||
|
||||
export type ToolbarPropsType = {
|
||||
editorMode: EditorRenderMode;
|
||||
@ -133,6 +134,13 @@ export default function Toolbar({
|
||||
<img src={PrintSvg} />
|
||||
</ToolbarButton>
|
||||
)}
|
||||
<ToolbarButton
|
||||
id="info"
|
||||
className="buttonOn"
|
||||
onClick={() => onAction('info')}
|
||||
>
|
||||
<img src={InfoSvg} />
|
||||
</ToolbarButton>
|
||||
{editorMode === 'edition-owner' && (
|
||||
<>
|
||||
<ToolbarButton
|
||||
|
@ -35,7 +35,7 @@ const mapId = 'welcome';
|
||||
const options: EditorOptions = {
|
||||
zoom: 0.8,
|
||||
locked: false,
|
||||
mapTitle: "Develop Mindnap",
|
||||
mapTitle: "Develop WiseMapping",
|
||||
mode: 'edition-owner',
|
||||
locale: 'en',
|
||||
enableKeyboardEvents: true
|
||||
|
@ -36,7 +36,7 @@ const persistence = new LocalStorageManager('samples/{id}.wxml', false);
|
||||
const options: EditorOptions = {
|
||||
zoom: 0.8,
|
||||
locked: false,
|
||||
mapTitle: "Develop Mindnap",
|
||||
mapTitle: "Develop WiseMapping",
|
||||
mode: 'viewonly',
|
||||
locale: 'en',
|
||||
enableKeyboardEvents: true
|
||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wisemapping/mindplot",
|
||||
"version": "5.0.10",
|
||||
"version": "5.0.12",
|
||||
"description": "WiseMapping - Mindplot Canvas Library",
|
||||
"homepage": "http://www.wisemapping.org/",
|
||||
"directories": {
|
||||
|
@ -21,12 +21,19 @@ import Keyboard from './Keyboard';
|
||||
import { Designer } from '..';
|
||||
import Topic from './Topic';
|
||||
|
||||
import initHotKeyPluggin from '../../../../libraries/jquery.hotkeys';
|
||||
|
||||
// Provides dispatcher of keyevents by key...
|
||||
initHotKeyPluggin($);
|
||||
|
||||
export type EventCallback = (event?: Event) => void;
|
||||
class DesignerKeyboard extends Keyboard {
|
||||
// eslint-disable-next-line no-use-before-define
|
||||
static _instance: DesignerKeyboard;
|
||||
private static _instance: DesignerKeyboard;
|
||||
|
||||
static _disabled: boolean;
|
||||
private static _disabled: boolean;
|
||||
|
||||
private static excludeFromEditor = ['Enter', 'CapsLock', 'Escape', 'F1', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9', 'F10', 'F11', 'F12'];
|
||||
|
||||
constructor(designer: Designer) {
|
||||
super();
|
||||
@ -35,173 +42,61 @@ class DesignerKeyboard extends Keyboard {
|
||||
}
|
||||
|
||||
addShortcut(shortcuts: string[] | string, callback: EventCallback): void {
|
||||
super.addShortcut(shortcuts, (e: Event) => {
|
||||
super.addShortcut(shortcuts, () => {
|
||||
if (DesignerKeyboard.isDisabled()) {
|
||||
return;
|
||||
}
|
||||
callback(e);
|
||||
callback();
|
||||
});
|
||||
}
|
||||
|
||||
private _registerEvents(designer: Designer) {
|
||||
// Try with the keyboard ..
|
||||
const model = designer.getModel();
|
||||
this.addShortcut(
|
||||
['backspace'], (event: Event) => {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
designer.deleteSelectedEntities();
|
||||
},
|
||||
);
|
||||
this.addShortcut(
|
||||
['space'], (event: Event) => {
|
||||
designer.shrinkSelectedBranch();
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
},
|
||||
);
|
||||
this.addShortcut(
|
||||
['f2'], (event: Event) => {
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
const node = model.selectedTopic();
|
||||
if (node) {
|
||||
node.showTextEditor(node.getText());
|
||||
}
|
||||
},
|
||||
);
|
||||
this.addShortcut(
|
||||
['del'], (event: Event) => {
|
||||
designer.deleteSelectedEntities();
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
},
|
||||
);
|
||||
this.addShortcut(
|
||||
['enter'], () => {
|
||||
designer.createSiblingForSelectedNode();
|
||||
},
|
||||
);
|
||||
this.addShortcut(
|
||||
['insert'], (event: Event) => {
|
||||
designer.createChildForSelectedNode();
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
},
|
||||
);
|
||||
this.addShortcut(
|
||||
['tab'], (eventevent: Event) => {
|
||||
designer.createChildForSelectedNode();
|
||||
eventevent.preventDefault();
|
||||
eventevent.stopPropagation();
|
||||
},
|
||||
);
|
||||
this.addShortcut(
|
||||
['meta+enter'], (eventevent: Event) => {
|
||||
eventevent.preventDefault();
|
||||
eventevent.stopPropagation();
|
||||
designer.createChildForSelectedNode();
|
||||
},
|
||||
);
|
||||
this.addShortcut(
|
||||
['ctrl+z', 'meta+z'], (event: Event) => {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
designer.undo();
|
||||
},
|
||||
);
|
||||
this.addShortcut(
|
||||
['ctrl+c', 'meta+c'], (event: Event) => {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
designer.copyToClipboard();
|
||||
},
|
||||
);
|
||||
this.addShortcut(
|
||||
['ctrl+l', 'meta+l'], (event: Event) => {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
designer.addLink();
|
||||
},
|
||||
);
|
||||
this.addShortcut(
|
||||
['ctrl+k', 'meta+k'], (event: Event) => {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
designer.addNote();
|
||||
},
|
||||
);
|
||||
this.addShortcut(
|
||||
['ctrl+v', 'meta+v'], (event: Event) => {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
designer.pasteClipboard();
|
||||
},
|
||||
);
|
||||
this.addShortcut(
|
||||
['ctrl+shift+z', 'meta+shift+z', 'ctrl+y', 'meta+y'], (event: Event) => {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
designer.redo();
|
||||
},
|
||||
);
|
||||
this.addShortcut(
|
||||
['ctrl+a', 'meta+a'], (event: Event) => {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
designer.selectAll();
|
||||
},
|
||||
);
|
||||
this.addShortcut(
|
||||
['ctrl+b', 'meta+b'], (event: Event) => {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
this.addShortcut(['backspace', 'del'], () => { designer.deleteSelectedEntities(); });
|
||||
|
||||
designer.changeFontWeight();
|
||||
},
|
||||
);
|
||||
this.addShortcut(
|
||||
['ctrl+s', 'meta+s'], (event: Event) => {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
$(document).find('#save').trigger('click');
|
||||
},
|
||||
);
|
||||
this.addShortcut(
|
||||
['ctrl+i', 'meta+i'], (event: Event) => {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
this.addShortcut('space', () => { designer.shrinkSelectedBranch(); });
|
||||
|
||||
designer.changeFontStyle();
|
||||
},
|
||||
);
|
||||
this.addShortcut(
|
||||
['ctrl+shift+a', 'meta+shift+a'], (event: Event) => {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
this.addShortcut('f2', () => {
|
||||
const node = model.selectedTopic();
|
||||
if (node) {
|
||||
node.showTextEditor(node.getText());
|
||||
}
|
||||
});
|
||||
|
||||
designer.deselectAll();
|
||||
},
|
||||
);
|
||||
this.addShortcut(
|
||||
['meta+=', 'ctrl+='], (event: Event) => {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
this.addShortcut(['insert', 'tab', 'meta+enter'], () => { designer.createChildForSelectedNode(); });
|
||||
|
||||
designer.zoomIn();
|
||||
},
|
||||
);
|
||||
this.addShortcut(
|
||||
['meta+-', 'ctrl+-'], (event: Event) => {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
this.addShortcut('enter', () => { designer.createSiblingForSelectedNode(); });
|
||||
|
||||
this.addShortcut(['ctrl+z', 'meta+z'], () => { designer.undo(); });
|
||||
|
||||
this.addShortcut(['ctrl+shift+z', 'meta+shift+z'], () => { designer.redo(); });
|
||||
|
||||
this.addShortcut(['ctrl+c', 'meta+c'], () => { designer.copyToClipboard(); });
|
||||
|
||||
this.addShortcut(['ctrl+l', 'meta+l'], () => { designer.addLink(); });
|
||||
|
||||
this.addShortcut(['ctrl+k', 'meta+k'], () => { designer.addNote(); });
|
||||
|
||||
this.addShortcut(['ctrl+v', 'meta+v'], () => { designer.pasteClipboard(); });
|
||||
|
||||
this.addShortcut(['ctrl+a', 'meta+a'], () => { designer.selectAll(); });
|
||||
|
||||
this.addShortcut(['ctrl+b', 'meta+b'], () => { designer.changeFontWeight(); });
|
||||
|
||||
this.addShortcut(['ctrl+s', 'meta+s'], () => { $(document).find('#save').trigger('click'); });
|
||||
|
||||
this.addShortcut(['ctrl+i', 'meta+i'], () => { designer.changeFontStyle(); });
|
||||
|
||||
this.addShortcut(['ctrl+shift+a', 'meta+shift+a'], () => { designer.deselectAll(); });
|
||||
|
||||
this.addShortcut(['meta+=', 'ctrl+='], () => { designer.zoomIn(); });
|
||||
|
||||
this.addShortcut(['meta+-', 'ctrl+-'], () => { designer.zoomOut(); });
|
||||
|
||||
designer.zoomOut();
|
||||
},
|
||||
);
|
||||
const me = this;
|
||||
this.addShortcut(
|
||||
'right', (event: Event) => {
|
||||
'right', () => {
|
||||
const node = model.selectedTopic();
|
||||
if (node) {
|
||||
if (node.isCentralTopic()) {
|
||||
@ -215,12 +110,11 @@ class DesignerKeyboard extends Keyboard {
|
||||
const centralTopic = model.getCentralTopic();
|
||||
me._goToNode(designer, centralTopic);
|
||||
}
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
},
|
||||
);
|
||||
|
||||
this.addShortcut(
|
||||
'left', (event: Event) => {
|
||||
'left', () => {
|
||||
const node = model.selectedTopic();
|
||||
if (node) {
|
||||
if (node.isCentralTopic()) {
|
||||
@ -234,12 +128,11 @@ class DesignerKeyboard extends Keyboard {
|
||||
const centralTopic = model.getCentralTopic();
|
||||
me._goToNode(designer, centralTopic);
|
||||
}
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
},
|
||||
);
|
||||
|
||||
this.addShortcut(
|
||||
'up', (event: Event) => {
|
||||
'up', () => {
|
||||
const node = model.selectedTopic();
|
||||
if (node) {
|
||||
if (!node.isCentralTopic()) {
|
||||
@ -249,12 +142,10 @@ class DesignerKeyboard extends Keyboard {
|
||||
const centralTopic = model.getCentralTopic();
|
||||
me._goToNode(designer, centralTopic);
|
||||
}
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
},
|
||||
);
|
||||
this.addShortcut(
|
||||
'down', (event: Event) => {
|
||||
'down', () => {
|
||||
const node = model.selectedTopic();
|
||||
if (node) {
|
||||
if (!node.isCentralTopic()) {
|
||||
@ -264,42 +155,26 @@ class DesignerKeyboard extends Keyboard {
|
||||
const centralTopic = model.getCentralTopic();
|
||||
me._goToNode(designer, centralTopic);
|
||||
}
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
},
|
||||
);
|
||||
const excludes = ['esc', 'escape', 'f1', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'f10', 'f11', 'f12'];
|
||||
|
||||
$(document).on('keypress', (event) => {
|
||||
let keyCode: number;
|
||||
|
||||
if (DesignerKeyboard.isDisabled()) {
|
||||
// Needs to be ignored ?
|
||||
if (DesignerKeyboard.isDisabled() || DesignerKeyboard.excludeFromEditor.includes(event.code)) {
|
||||
return;
|
||||
}
|
||||
// Firefox doesn't skip special keys for keypress event...
|
||||
if (event.key && excludes.includes(event.key.toLowerCase())) {
|
||||
|
||||
// Is a modifier ?
|
||||
if (event.ctrlKey || event.altKey || event.metaKey) {
|
||||
return;
|
||||
}
|
||||
// Sometimes Firefox doesn't contain keyCode value
|
||||
if (event.key && event.keyCode === 0) {
|
||||
keyCode = event.charCode;
|
||||
} else {
|
||||
keyCode = event.keyCode;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const jq: any = $;
|
||||
const specialKey = jq.hotkeys.specialKeys[keyCode];
|
||||
if (['enter', 'capslock'].indexOf(specialKey) === -1 && !jq.hotkeys.shiftNums[keyCode]) {
|
||||
const nodes = designer.getModel().filterSelectedTopics();
|
||||
if (nodes.length > 0) {
|
||||
// If a modifier is press, the key selected must be ignored.
|
||||
if (event.ctrlKey || event.altKey || event.metaKey) {
|
||||
return;
|
||||
}
|
||||
nodes[0].showTextEditor('');
|
||||
event.stopPropagation();
|
||||
}
|
||||
// If a node is selected, open the editor ...
|
||||
const topic = designer.getModel().selectedTopic();
|
||||
if (topic) {
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
topic.showTextEditor(event.key);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -405,75 +280,17 @@ class DesignerKeyboard extends Keyboard {
|
||||
this._disabled = false;
|
||||
};
|
||||
|
||||
static pause = function pause() {
|
||||
static pause() {
|
||||
this._disabled = true;
|
||||
};
|
||||
}
|
||||
|
||||
static resume = function resume() {
|
||||
static resume() {
|
||||
this._disabled = false;
|
||||
};
|
||||
}
|
||||
|
||||
static isDisabled = function isDisabled() {
|
||||
static isDisabled() {
|
||||
return this._disabled;
|
||||
};
|
||||
|
||||
static specialKeys = {
|
||||
8: 'backspace',
|
||||
9: 'tab',
|
||||
10: 'return',
|
||||
13: 'enter',
|
||||
16: 'shift',
|
||||
17: 'ctrl',
|
||||
18: 'alt',
|
||||
19: 'pause',
|
||||
20: 'capslock',
|
||||
27: 'esc',
|
||||
32: 'space',
|
||||
33: 'pageup',
|
||||
34: 'pagedown',
|
||||
35: 'end',
|
||||
36: 'home',
|
||||
37: 'left',
|
||||
38: 'up',
|
||||
39: 'right',
|
||||
40: 'down',
|
||||
45: 'insert',
|
||||
46: 'del',
|
||||
96: '0',
|
||||
97: '1',
|
||||
98: '2',
|
||||
99: '3',
|
||||
100: '4',
|
||||
101: '5',
|
||||
102: '6',
|
||||
103: '7',
|
||||
104: '8',
|
||||
105: '9',
|
||||
106: '*',
|
||||
107: '+',
|
||||
109: '-',
|
||||
110: '.',
|
||||
111: '/',
|
||||
112: 'f1',
|
||||
113: 'f2',
|
||||
114: 'f3',
|
||||
115: 'f4',
|
||||
116: 'f5',
|
||||
117: 'f6',
|
||||
118: 'f7',
|
||||
119: 'f8',
|
||||
120: 'f9',
|
||||
121: 'f10',
|
||||
122: 'f11',
|
||||
123: 'f12',
|
||||
144: 'numlock',
|
||||
145: 'scroll',
|
||||
186: ';',
|
||||
191: '/',
|
||||
220: '\\',
|
||||
222: "'",
|
||||
224: 'meta',
|
||||
};
|
||||
}
|
||||
|
||||
static getInstance() {
|
||||
return this._instance;
|
||||
|
@ -59,27 +59,15 @@ class DesignerModel extends Events {
|
||||
}
|
||||
|
||||
filterSelectedTopics(): Topic[] {
|
||||
const result: Topic[] = [];
|
||||
for (let i = 0; i < this._topics.length; i++) {
|
||||
if (this._topics[i].isOnFocus()) {
|
||||
result.push(this._topics[i]);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
return this._topics.filter((t) => t.isOnFocus());
|
||||
}
|
||||
|
||||
filterSelectedRelationships(): Relationship[] {
|
||||
const result:Relationship[] = [];
|
||||
for (let i = 0; i < this._relationships.length; i++) {
|
||||
if (this._relationships[i].isOnFocus()) {
|
||||
result.push(this._relationships[i]);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
return this._relationships.filter((r) => r.isOnFocus());
|
||||
}
|
||||
|
||||
getEntities(): (Relationship | Topic)[] {
|
||||
let result:(Relationship|Topic)[] = [];
|
||||
let result: (Relationship | Topic)[] = [];
|
||||
result = result.concat(this._topics);
|
||||
result = result.concat(this._relationships);
|
||||
return result;
|
||||
@ -133,15 +121,7 @@ class DesignerModel extends Events {
|
||||
}
|
||||
|
||||
findTopicById(id: number): Topic | undefined {
|
||||
let result: Topic | undefined;
|
||||
for (let i = 0; i < this._topics.length; i++) {
|
||||
const topic = this._topics[i];
|
||||
if (topic.getId() === id) {
|
||||
result = topic;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
return this._topics.find((t) => t.getId() === id);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -37,7 +37,13 @@ class ImageIcon extends Icon {
|
||||
$assert(topic, 'topic can not be null');
|
||||
|
||||
// Build graph image representation ...
|
||||
const iconType = iconModel.getIconType();
|
||||
let iconType = iconModel.getIconType();
|
||||
|
||||
// Hack for overwrite wrong icon. Remove in couple of months ...
|
||||
if (iconType === 'meeetapps_facebook-messenger') {
|
||||
iconType = 'meetapps_facebook-messenger';
|
||||
}
|
||||
|
||||
const imgUrl = ImageIcon.getImageUrl(iconType);
|
||||
super(imgUrl);
|
||||
|
||||
@ -202,7 +208,7 @@ ImageIcon.prototype.ICON_FAMILIES = [{
|
||||
},
|
||||
{
|
||||
id: 'meetapps',
|
||||
icons: ['meetapps_slack', 'meetapps_google-meet', 'meetapps_whatapp', 'meetapps_ms-teams', 'meetapps_zoom', 'meeetapps_facebook-messenger'],
|
||||
icons: ['meetapps_slack', 'meetapps_google-meet', 'meetapps_whatapp', 'meetapps_ms-teams', 'meetapps_zoom', 'meetapps_facebook-messenger'],
|
||||
},
|
||||
{
|
||||
id: 'appsgoogle',
|
||||
|
@ -16,12 +16,21 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
import $ from 'jquery';
|
||||
import initHotKeyPluggin from '../../../../libraries/jquery.hotkeys';
|
||||
|
||||
// Provides dispatcher of keyevents by key...
|
||||
initHotKeyPluggin($);
|
||||
|
||||
class Keyboard {
|
||||
addShortcut(shortcuts: string[] | string, callback) {
|
||||
addShortcut(shortcuts: string[] | string, callback: () => void) {
|
||||
const shortcutsArray = Array.isArray(shortcuts) ? shortcuts : [shortcuts];
|
||||
shortcutsArray.forEach((shortcut) => {
|
||||
$(document).bind('keydown', shortcut, callback);
|
||||
$(document).bind('keydown', shortcut,
|
||||
(e) => {
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
callback();
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -18,13 +18,10 @@
|
||||
import { $defined } from '@wisemapping/core-js';
|
||||
import $ from 'jquery';
|
||||
|
||||
import initHotKeyPluggin from '../../../../libraries/jquery.hotkeys';
|
||||
import Events from './Events';
|
||||
import ActionDispatcher from './ActionDispatcher';
|
||||
import Topic from './Topic';
|
||||
|
||||
initHotKeyPluggin($);
|
||||
|
||||
class MultilineTextEditor extends Events {
|
||||
private _topic: Topic;
|
||||
|
||||
@ -61,12 +58,11 @@ class MultilineTextEditor extends Events {
|
||||
private _registerEvents(containerElem: JQuery) {
|
||||
const textareaElem = this._getTextareaElem();
|
||||
textareaElem.on('keydown', (event) => {
|
||||
const j: any = $;
|
||||
switch (j.hotkeys.specialKeys[event.keyCode]) {
|
||||
case 'esc':
|
||||
switch (event.code) {
|
||||
case 'Escape':
|
||||
this.close(false);
|
||||
break;
|
||||
case 'enter': {
|
||||
case 'Enter': {
|
||||
if (event.metaKey || event.ctrlKey) {
|
||||
// Add return ...
|
||||
const text = this._getTextAreaText();
|
||||
@ -250,12 +246,12 @@ class MultilineTextEditor extends Events {
|
||||
|
||||
private _positionCursor(textareaElem: JQuery<HTMLTextAreaElement>, selectText: boolean) {
|
||||
textareaElem.focus();
|
||||
const lengh = this._getTextAreaText().length;
|
||||
const { length } = this._getTextAreaText();
|
||||
if (selectText) {
|
||||
// Mark text as selected ...
|
||||
textareaElem[0].setSelectionRange(0, lengh);
|
||||
textareaElem[0].setSelectionRange(0, length);
|
||||
} else {
|
||||
textareaElem.focus();
|
||||
textareaElem[0].setSelectionRange(length, length);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -60,7 +60,14 @@ export default class Freemap {
|
||||
// Is a freemap?
|
||||
$assert(
|
||||
rootElem.tagName === 'map',
|
||||
`This seem not to be a map document. Found tag: ${rootElem.tagName}`,
|
||||
`This seem not to be a map document. Found first tag: ${rootElem.tagName}`,
|
||||
);
|
||||
|
||||
// Verify that the version attribute exists
|
||||
console.log(rootElem.getAttribute('version'));
|
||||
$assert(
|
||||
rootElem.getAttribute('version') !== null,
|
||||
'Freemind version not found',
|
||||
);
|
||||
|
||||
// Start the loading process...
|
||||
|
@ -146,7 +146,13 @@ export default class FreemindImporter extends Importer {
|
||||
|
||||
private convertNodeProperties(freeNode: FreemindNode, wiseTopic: NodeModel, centralTopic: boolean): void {
|
||||
const text: string = freeNode.getText();
|
||||
if (text) wiseTopic.setText(text);
|
||||
if (text) {
|
||||
if (!centralTopic && text.length > 100) {
|
||||
wiseTopic.setText(text.replace(/([^\n]{1,100})\s/g, '$1\n'));
|
||||
} else {
|
||||
wiseTopic.setText(text);
|
||||
}
|
||||
}
|
||||
|
||||
const bgColor: string = freeNode.getBackgorundColor();
|
||||
if (bgColor) wiseTopic.setBackgroundColor(bgColor);
|
||||
|
@ -11,39 +11,127 @@
|
||||
<topic position="-380,-112" order="1" text="21-year-old " shape="line" id="720929382"/>
|
||||
</topic>
|
||||
<topic position="380,-87" order="1" text="what" shape="line" shrink="true" id="1982200632">
|
||||
<topic position="-380,-162" order="0" text="obtained log-in and password information for 1,000 e-mail accounts belonging to foreign embassies, corporations and human rights organizations" shape="line" id="1786192306"/>
|
||||
<topic position="-470,-137" order="1" text="when he posted on his web site the log-in information and passwords for 100 of the 1,000 e-mail accounts for which he obtained log-ins and passwords. (His site is no longer online). He posted the information, he said, because he felt it would be the most effective way to make the account owners aware that their communication had been compromised." shape="line" id="258634955">
|
||||
<topic position="-380,-162" order="0" shape="line" id="1786192306">
|
||||
<text><![CDATA[obtained log-in and password information for 1,000 e-mail accounts belonging to foreign embassies,
|
||||
corporations and human rights
|
||||
organizations]]></text>
|
||||
</topic>
|
||||
<topic position="-470,-137" order="1" shape="line" id="258634955">
|
||||
<text><![CDATA[when he posted on his web site the log-in information and passwords for 100 of the 1,000 e-mail
|
||||
accounts for which he obtained log-ins and passwords. (His site is no longer online). He posted the
|
||||
information, he said, because he felt it would be the most effective way to make the account owners
|
||||
aware that their communication had been
|
||||
compromised.]]></text>
|
||||
<topic position="470,-162" order="0" text="including one corporation that does more than $10bn in annual revenue." shape="line" id="783703672"/>
|
||||
<topic position="560,-137" order="1" text="request of American law enforcement agencies" shape="line" id="1648785444"/>
|
||||
</topic>
|
||||
<topic position="-560,-112" order="2" text="Initially, Egerstad refused to disclose how he obtained the log-ins and passwords. But then in September he revealed that he'd intercepted the information through five exit nodes that he'd set up on the Tor network in Asia, the US and Europe" shape="line" id="927456224"/>
|
||||
<topic position="-650,-87" order="3" text="Tor is used by people who want to maintain privacy and don't want anyone to know where they go on the web or with whom they communicate. Tor traffic is encrypted while it's enroute, but is decrypted as it leaves the exit node and goes to its final destination. Egerstad simply sniffed the plaintext traffic that passed through his five exit nodes to obtain the user names and passwords of e-mail accounts." shape="line" id="642215802">
|
||||
<topic position="650,-99" order="0" text="#1 Five ToR exit nodes, at different locations in the world, equipped with our own packet-sniffer focused entirely on POP3 and IMAP traffic using a keyword-filter looking for words like “gov, government, embassy, military, war, terrorism, passport, visa” as well as domains belonging to governments. This was all set up after a small experiment looking into how many users encrypt their mail where one mail caught my eye and got me started thinking doing a large scale test. Each user is not only giving away his/her passwords but also every mail they read or download together with all other traffic such as web and instant messaging." shape="line" id="1211756003"/>
|
||||
<topic position="-560,-112" order="2" shape="line" id="927456224">
|
||||
<text><![CDATA[Initially, Egerstad refused to disclose how he obtained the log-ins and passwords. But then in
|
||||
September he revealed that he'd intercepted the information through five exit nodes that he'd set up
|
||||
on the Tor network in Asia, the US and
|
||||
Europe]]></text>
|
||||
</topic>
|
||||
<topic position="-650,-87" order="3" shape="line" id="642215802">
|
||||
<text><![CDATA[Tor is used by people who want to maintain privacy and don't want anyone to know where they go on
|
||||
the web or with whom they communicate. Tor traffic is encrypted while it's enroute, but is decrypted
|
||||
as it leaves the exit node and goes to its final destination. Egerstad simply sniffed the plaintext
|
||||
traffic that passed through his five exit nodes to obtain the user names and passwords of e-mail
|
||||
accounts.]]></text>
|
||||
<topic position="650,-99" order="0" shape="line" id="1211756003">
|
||||
<text><![CDATA[#1 Five ToR exit nodes, at different locations in the world, equipped with our own packet-sniffer
|
||||
focused entirely on POP3 and IMAP traffic using a keyword-filter looking for words like “gov,
|
||||
government, embassy, military, war, terrorism, passport, visa” as well as domains belonging to
|
||||
governments. This was all set up after a small experiment looking into how many users encrypt their
|
||||
mail where one mail caught my eye and got me started thinking doing a large scale test. Each user is
|
||||
not only giving away his/her passwords but also every mail they read or download together with all
|
||||
other traffic such as web and instant
|
||||
messaging.]]></text>
|
||||
</topic>
|
||||
</topic>
|
||||
<topic position="-740,-62" order="4" shape="line" id="378589600">
|
||||
<text><![CDATA[Egerstad didn't hack any systems to obtain the data and therefore says he didn't break any laws, but
|
||||
once he posted the log-in details for the accounts online he provided others with all the
|
||||
information they needed to breach the accounts and read sensitive correspondence stored in
|
||||
them.]]></text>
|
||||
</topic>
|
||||
<topic position="-740,-62" order="4" text="Egerstad didn't hack any systems to obtain the data and therefore says he didn't break any laws, but once he posted the log-in details for the accounts online he provided others with all the information they needed to breach the accounts and read sensitive correspondence stored in them." shape="line" id="378589600"/>
|
||||
<topic position="-830,-37" order="5" text="what he could read" shape="line" id="701607448">
|
||||
<topic position="830,-62" order="0" text="Victims of Egerstad's research project included embassies belonging to Australia, Japan, Iran, India and Russia. Egerstad also found accounts belonging to the foreign ministry of Iran, the United Kingdom's visa office in Nepal and the Defence Research and Development Organization in India's Ministry of Defence." shape="line" id="1653141327"/>
|
||||
<topic position="920,-37" order="1" text="In addition, Egerstad was able to read correspondence belonging to the Indian ambassador to China, various politicians in Hong Kong, workers in the Dalai Lama's liaison office and several human-rights groups in Hong Kong." shape="line" id="293271973"/>
|
||||
<topic position="830,-62" order="0" shape="line" id="1653141327">
|
||||
<text><![CDATA[Victims of Egerstad's research project included embassies belonging to Australia, Japan, Iran, India
|
||||
and Russia. Egerstad also found accounts belonging to the foreign ministry of Iran, the United
|
||||
Kingdom's visa office in Nepal and the Defence Research and Development Organization in India's
|
||||
Ministry of
|
||||
Defence.]]></text>
|
||||
</topic>
|
||||
<topic position="920,-37" order="1" shape="line" id="293271973">
|
||||
<text><![CDATA[In addition, Egerstad was able to read correspondence belonging to the Indian ambassador to China,
|
||||
various politicians in Hong Kong, workers in the Dalai Lama's liaison office and several
|
||||
human-rights groups in Hong
|
||||
Kong.]]></text>
|
||||
</topic>
|
||||
</topic>
|
||||
</topic>
|
||||
<topic position="470,-62" order="2" text="when" shape="line" shrink="true" id="1054930706">
|
||||
<topic position="-470,-74" order="0" text="August - Sept 2007" shape="line" id="355764311"/>
|
||||
</topic>
|
||||
<topic position="560,-37" order="3" text="why?" shape="line" shrink="true" id="1467573808">
|
||||
<topic position="-560,-62" order="0" text="But Egerstad remains convinced he did the right thing, saying it was the only way to call attention to problem that Tor officials have already warned about previously." shape="line" id="126964183"/>
|
||||
<topic position="-650,-37" order="1" text="withheld details on how he came into possession of the passwords, instead writing that "there is no exploit to publish, no vendor to contact"." shape="line" id="38126740"/>
|
||||
<topic position="-560,-62" order="0" shape="line" id="126964183">
|
||||
<text><![CDATA[But Egerstad remains convinced he did the right thing, saying it was the only way to call attention
|
||||
to problem that Tor officials have already warned about
|
||||
previously.]]></text>
|
||||
</topic>
|
||||
<topic position="-650,-37" order="1" shape="line" id="38126740">
|
||||
<text><![CDATA[withheld details on how he came into possession of the passwords, instead writing that "there is no
|
||||
exploit to publish, no vendor to
|
||||
contact".]]></text>
|
||||
</topic>
|
||||
</topic>
|
||||
<topic position="650,-12" order="4" text="response" shape="line" shrink="true" id="1493808593">
|
||||
<topic position="-650,-62" order="0" text="house raided on Monday by Swedish officials, who took him in for questioning" shape="line" id="1639195319"/>
|
||||
<topic position="-740,-37" order="1" text="While three of them took him to the local police headquarters for questioning, the other two agents ransacked his house and hauled away three computers, external hard drives, CDs, notebooks and various papers" shape="line" id="1911990641"/>
|
||||
<topic position="-830,-12" order="2" text="Egerstad hasn't been charged with anything but is under suspicion for breaking into computers, which he says he never did. Egerstad said the agents told him they were investigating him because he had "pissed off some foreign countries."" shape="line" id="1645583680"/>
|
||||
<topic position="-920,13" order="3" text="The posting of 100 official embassy passwords has made Egerstad a pariah in many circles. Publishing information that allows any old criminal to infiltrate sensitive government networks is a touchy thing, and many, including several Reg readers, have denounced it." shape="line" id="671508443"/>
|
||||
<topic position="-740,-37" order="1" shape="line" id="1911990641">
|
||||
<text><![CDATA[While three of them took him to the local police headquarters for questioning, the other two agents
|
||||
ransacked his house and hauled away three computers, external hard drives, CDs, notebooks and
|
||||
various
|
||||
papers]]></text>
|
||||
</topic>
|
||||
<topic position="-830,-12" order="2" shape="line" id="1645583680">
|
||||
<text><![CDATA[Egerstad hasn't been charged with anything but is under suspicion for breaking into computers, which
|
||||
he says he never did. Egerstad said the agents told him they were investigating him because he had
|
||||
"pissed off some foreign
|
||||
countries."]]></text>
|
||||
</topic>
|
||||
<topic position="-920,13" order="3" shape="line" id="671508443">
|
||||
<text><![CDATA[The posting of 100 official embassy passwords has made Egerstad a pariah in many circles. Publishing
|
||||
information that allows any old criminal to infiltrate sensitive government networks is a touchy
|
||||
thing, and many, including several Reg readers, have denounced
|
||||
it.]]></text>
|
||||
</topic>
|
||||
</topic>
|
||||
<topic position="740,13" order="5" text="analysis" shape="line" id="1006842787">
|
||||
<topic position="-740,-37" order="0" text="As Egerstad and I discussed the problem in August, we both came to the conclusion that the embassy employees were likely not using Tor nor even knew what Tor was. Instead, we suspected that the traffic he sniffed belonged to someone who had hacked the accounts and was eavesdropping on them via the Tor network. As the hacked data passed through Egerstad's Tor exit nodes, he was able to read it as well." shape="line" id="914839159"/>
|
||||
<topic position="-830,-12" order="1" text="it's NOT a problem within Tor. Tor is meant for privacy, not confidentiality!!!! I'm a bit amazed governments and companies are using this as a security measure." shape="line" id="387297264"/>
|
||||
<topic position="-920,13" order="2" text="It's not a written law but it is a guideline in having a responsible disclosure. I think he did a responsible disclosure. Was it legal? He did intercept traffic that was not destined for him. So probably "no" depending on Swedish law. Is our society a safer place after the disclosure. Yes, I think it is. Instead of arresting him, the government should have offered him a job." shape="line" id="1627594721"/>
|
||||
<topic position="-1010,38" order="3" text="And what did we learn today? Don't report a security hole, sell it to Russia. Just kidding, but do check legal council before doing a disclosure." shape="line" id="522775828"/>
|
||||
<topic position="-740,-37" order="0" shape="line" id="914839159">
|
||||
<text><![CDATA[As Egerstad and I discussed the problem in August, we both came to the conclusion that the embassy
|
||||
employees were likely not using Tor nor even knew what Tor was. Instead, we suspected that the
|
||||
traffic he sniffed belonged to someone who had hacked the accounts and was eavesdropping on them via
|
||||
the Tor network. As the hacked data passed through Egerstad's Tor exit nodes, he was able to read it
|
||||
as
|
||||
well.]]></text>
|
||||
</topic>
|
||||
<topic position="-830,-12" order="1" shape="line" id="387297264">
|
||||
<text><![CDATA[it's NOT a problem within Tor. Tor is meant for privacy, not confidentiality!!!! I'm a bit amazed
|
||||
governments and companies are using this as a security
|
||||
measure.]]></text>
|
||||
</topic>
|
||||
<topic position="-920,13" order="2" shape="line" id="1627594721">
|
||||
<text><![CDATA[It's not a written law but it is a guideline in having a responsible disclosure. I think he did a
|
||||
responsible disclosure. Was it legal? He did intercept traffic that was not destined for him. So
|
||||
probably "no" depending on Swedish law. Is our society a safer place after the disclosure. Yes, I
|
||||
think it is. Instead of arresting him, the government should have offered him a
|
||||
job.]]></text>
|
||||
</topic>
|
||||
<topic position="-1010,38" order="3" shape="line" id="522775828">
|
||||
<text><![CDATA[And what did we learn today? Don't report a security hole, sell it to Russia. Just kidding, but do
|
||||
check legal council before doing a
|
||||
disclosure.]]></text>
|
||||
</topic>
|
||||
</topic>
|
||||
<topic position="830,38" order="6" text="articles on the incident" shape="line" id="10">
|
||||
<topic position="-830,-37" order="0" text="Wired article" shape="line" id="1706281223">
|
||||
@ -71,7 +159,11 @@
|
||||
<text><![CDATA[Shava Nerad
|
||||
Development Director, The Tor Project]]></text>
|
||||
<link url="http://www.theregister.co.uk/2007/09/10/misuse_of_tor_led_to_embassy_password_breach/comments/" urlType="url"/>
|
||||
<topic position="1280,63" order="0" text="A connection through Tor can be encrypted end-to-end -- but only if one is communicating with a secure protocol -- https: or encrypted chat both would be examples of this." shape="line" id="428154943"/>
|
||||
<topic position="1280,63" order="0" shape="line" id="428154943">
|
||||
<text><![CDATA[A connection through Tor can be encrypted end-to-end -- but only if one is communicating with a
|
||||
secure protocol -- https: or encrypted chat both would be examples of
|
||||
this.]]></text>
|
||||
</topic>
|
||||
<topic position="1370,88" order="1" text="more sensible comments" shape="line" id="613513779">
|
||||
<topic position="-1370,63" order="0" text="be sensible" shape="line" id="785632554"/>
|
||||
<topic position="-1460,88" order="1" text="use encryption" shape="line" id="933048896"/>
|
||||
@ -79,22 +171,50 @@ Development Director, The Tor Project]]></text>
|
||||
</topic>
|
||||
</topic>
|
||||
<topic position="920,63" order="7" text="threat" shape="line" shrink="true" id="620851645">
|
||||
<topic position="-920,1" order="0" text="But Egerstad says that many who use Tor mistakenly believe it is an end-to-end encryption tool. As a result, they aren't taking the precautions they need to take to protect their web activity." shape="line" id="1865367107"/>
|
||||
<topic position="-1010,26" order="1" text=""I am absolutely positive that I am not the only one to figure this out," Egerstad says. "I'm pretty sure there are governments doing the exact same thing. There's probably a reason why people are volunteering to set up a node."" shape="line" id="793585356">
|
||||
<topic position="-920,1" order="0" shape="line" id="1865367107">
|
||||
<text><![CDATA[But Egerstad says that many who use Tor mistakenly believe it is an end-to-end encryption tool. As a
|
||||
result, they aren't taking the precautions they need to take to protect their web
|
||||
activity.]]></text>
|
||||
</topic>
|
||||
<topic position="-1010,26" order="1" shape="line" id="793585356">
|
||||
<text><![CDATA["I am absolutely positive that I am not the only one to figure this out," Egerstad says. "I'm pretty
|
||||
sure there are governments doing the exact same thing. There's probably a reason why people are
|
||||
volunteering to set up a
|
||||
node."]]></text>
|
||||
<topic position="1010,14" order="0" shape="line" id="1624606525">
|
||||
<text><![CDATA[For example, several Tor nodes in the Washington, D.C., area can handle up to 10T bytes of data a month, a flow of data that would cost at least US$5,000 a month to run, and is likely way out the range of volunteers who run a node on their own money, Egerstad said.
|
||||
<text><![CDATA[For example, several Tor nodes in the Washington, D.C., area can handle up to 10T bytes of data a
|
||||
month, a flow of data that would cost at least US$5,000 a month to run, and is likely way out the
|
||||
range of volunteers who run a node on their own money, Egerstad said.
|
||||
|
||||
"Who would pay for that?" Egerstad said]]></text>
|
||||
"Who would pay for that?" Egerstad
|
||||
said]]></text>
|
||||
</topic>
|
||||
</topic>
|
||||
<topic position="-1100,51" order="2" text="To his surprise, he found that more than 99 percent of the traffic -- including requests for Web sites, instant messaging traffic and e-mails -- were transmitted unencrypted." shape="line" id="322430860">
|
||||
<topic position="-1100,51" order="2" shape="line" id="322430860">
|
||||
<text><![CDATA[To his surprise, he found that more than 99 percent of the traffic -- including requests for Web
|
||||
sites, instant messaging traffic and e-mails -- were transmitted
|
||||
unencrypted.]]></text>
|
||||
<topic position="1100,26" order="0" text="but it can't encrypted" shape="line" id="1190504719"/>
|
||||
<topic position="1190,51" order="1" text="unless you have some UDP SSL thing" shape="line" id="878085542"/>
|
||||
</topic>
|
||||
<topic position="-1190,76" order="3" text="Egerstad said the process of snooping on the traffic is trivial. The problem is not with Tor, which still works as intended, but with users' expectations: the Tor system is designed to merely anonymize Internet traffic and does not perform end-to-end encryption." shape="line" id="252326982" bgColor="undefined"/>
|
||||
<topic position="-1190,76" order="3" shape="line" id="252326982" bgColor="undefined">
|
||||
<text><![CDATA[Egerstad said the process of snooping on the traffic is trivial. The problem is not with Tor, which
|
||||
still works as intended, but with users' expectations: the Tor system is designed to merely
|
||||
anonymize Internet traffic and does not perform end-to-end
|
||||
encryption.]]></text>
|
||||
</topic>
|
||||
<topic position="-1280,101" order="4" text="know where to sniff" shape="line" id="1987137112">
|
||||
<topic position="1280,76" order="0" text="Yes of course end-to-end encryption would have fixed this, but without it Onion routing actually exacerbates the risk of packet sniffing." shape="line" id="57456761"/>
|
||||
<topic position="1370,101" order="1" text="The fact Onion routing was used is the only way this "researcher" (that leaves a bad taste) could get access to those packets in the first place - with regular routing he'd need to have access to the embassy's ISP's network, or their upstream networks, to sniff those packets." shape="line" id="1030401667"/>
|
||||
<topic position="1280,76" order="0" shape="line" id="57456761">
|
||||
<text><![CDATA[Yes of course end-to-end encryption would have fixed this, but without it Onion routing actually
|
||||
exacerbates the risk of packet
|
||||
sniffing.]]></text>
|
||||
</topic>
|
||||
<topic position="1370,101" order="1" shape="line" id="1030401667">
|
||||
<text><![CDATA[The fact Onion routing was used is the only way this "researcher" (that leaves a bad taste) could
|
||||
get access to those packets in the first place - with regular routing he'd need to have access to
|
||||
the embassy's ISP's network, or their upstream networks, to sniff those
|
||||
packets.]]></text>
|
||||
</topic>
|
||||
</topic>
|
||||
</topic>
|
||||
</topic>
|
||||
@ -104,22 +224,71 @@ Development Director, The Tor Project]]></text>
|
||||
<topic position="-470,-99" order="0" text="from the ToR site itself" shape="line" id="1921440204">
|
||||
<link url="http://www.torproject.org/overview.html.en" urlType="url"/>
|
||||
</topic>
|
||||
<topic position="-560,-74" order="1" text="Under Tor's architecture, administrators at the entry point can identify the user's IP address, but can't read the content of the user's correspondence or know its final destination. Each node in the network thereafter only knows the node from which it received the traffic, and it peels off a layer of encryption to reveal the next node to which it must forward the connection. (Tor stands for "The Onion Router.")" shape="line" id="801405722"/>
|
||||
<topic position="-650,-49" order="2" text="Tor works by using servers donated by volunteers around the world to bounce traffic around en route to its destination. Traffic is encrypted through most of that route, and routed over a random path each time a person uses it." shape="line" id="207380926"/>
|
||||
<topic position="-740,-24" order="3" text="downloaded from the Tor website to configure several servers designed to bounce sensitive traffic around the internet before it ultimately is routed to its destination. The Tor servers try to make it harder to trace the originator of traffic in much the same way an agent under surveillance might quickly drive in and out of a parking garage to throw off pursuers." shape="line" id="441868529"/>
|
||||
<topic position="-560,-74" order="1" shape="line" id="801405722">
|
||||
<text><![CDATA[Under Tor's architecture, administrators at the entry point can identify the user's IP address, but
|
||||
can't read the content of the user's correspondence or know its final destination. Each node in the
|
||||
network thereafter only knows the node from which it received the traffic, and it peels off a layer
|
||||
of encryption to reveal the next node to which it must forward the connection. (Tor stands for "The
|
||||
Onion
|
||||
Router.")]]></text>
|
||||
</topic>
|
||||
<topic position="-650,-49" order="2" shape="line" id="207380926">
|
||||
<text><![CDATA[Tor works by using servers donated by volunteers around the world to bounce traffic around en route
|
||||
to its destination. Traffic is encrypted through most of that route, and routed over a random path
|
||||
each time a person uses
|
||||
it.]]></text>
|
||||
</topic>
|
||||
<topic position="-740,-24" order="3" shape="line" id="441868529">
|
||||
<text><![CDATA[downloaded from the Tor website to configure several servers designed to bounce sensitive traffic
|
||||
around the internet before it ultimately is routed to its destination. The Tor servers try to make
|
||||
it harder to trace the originator of traffic in much the same way an agent under surveillance might
|
||||
quickly drive in and out of a parking garage to throw off
|
||||
pursuers.]]></text>
|
||||
</topic>
|
||||
<topic position="-830,1" order="4" text="1600 nodes" shape="line" id="1074734152"/>
|
||||
</topic>
|
||||
<topic position="560,-12" order="2" text="exit node caveat" shape="line" shrink="true" id="1922326141">
|
||||
<topic position="-560,-37" order="0" text="Tor has taken pains to warn its users that people running so-called exit nodes - which are the last Tor servers to touch a packet before sending it on its way - "can read the bytes that come in and out there." They go on to say: "This is why you should always use end-to-end encryption such as SSL for sensitive Internet connections."" shape="line" id="1458310176"/>
|
||||
<topic position="-650,-12" order="1" text="Unless they're surfing to a website protected with SSL encryption, or use encryption software like PGP, all of their e-mail content, instant messages, surfing and other web activity is potentially exposed to any eavesdropper who owns a Tor server. This amounts to a lot of eavesdroppers -- the software currently lists about 1,600 nodes in the Tor network." shape="line" shrink="true" id="253769006">
|
||||
<topic position="-560,-37" order="0" shape="line" id="1458310176">
|
||||
<text><![CDATA[Tor has taken pains to warn its users that people running so-called exit nodes - which are the last
|
||||
Tor servers to touch a packet before sending it on its way - "can read the bytes that come in and
|
||||
out there." They go on to say: "This is why you should always use end-to-end encryption such as SSL
|
||||
for sensitive Internet
|
||||
connections."]]></text>
|
||||
</topic>
|
||||
<topic position="-650,-12" order="1" shape="line" shrink="true" id="253769006">
|
||||
<text><![CDATA[Unless they're surfing to a website protected with SSL encryption, or use encryption software like
|
||||
PGP, all of their e-mail content, instant messages, surfing and other web activity is potentially
|
||||
exposed to any eavesdropper who owns a Tor server. This amounts to a lot of eavesdroppers -- the
|
||||
software currently lists about 1,600 nodes in the Tor
|
||||
network.]]></text>
|
||||
<topic position="650,-24" order="0" text="but then not anonymous!" shape="line" id="295074878"/>
|
||||
</topic>
|
||||
</topic>
|
||||
<topic position="650,13" order="3" text="who uses it?" shape="line" shrink="true" id="65883705">
|
||||
<topic position="-650,-37" order="0" text="has a slew of beneficial uses: Human-rights workers, the military and journalists all use the system. However, the anonymity of Tor has also attracted seedier elements as well: digital pirates, online criminals and, quite possibly, child pornographers" shape="line" id="317136509"/>
|
||||
<topic position="-740,-12" order="1" text="TOR (The Onion Router) is a network of proxy nodes set up to provide some privacy and anonymity to its users. Originally backed by the US Naval Research Laboratory, TOR became an Electronic Frontier Foundation (EFF) project three years ago. The system provides a way for whistleblowers and human rights workers to exchange information with journalists, among other things. The system also provides plenty of scope for mischief." shape="line" id="735767612"/>
|
||||
<topic position="-830,13" order="2" text="Tor has hundreds of thousands of users around the world, according to its developers. The largest numbers of users are in the United States, the European Union and China." shape="line" id="1333668798"/>
|
||||
<topic position="-920,38" order="3" text="The first is the use by embassies of the Tor product to obfusticate their communications. This is a reasonable response to the assumed traffic monitoring by the host country." shape="line" id="900915922"/>
|
||||
<topic position="-650,-37" order="0" shape="line" id="317136509">
|
||||
<text><![CDATA[has a slew of beneficial uses: Human-rights workers, the military and journalists all use the
|
||||
system. However, the anonymity of Tor has also attracted seedier elements as well: digital pirates,
|
||||
online criminals and, quite possibly, child
|
||||
pornographers]]></text>
|
||||
</topic>
|
||||
<topic position="-740,-12" order="1" shape="line" id="735767612">
|
||||
<text><![CDATA[TOR (The Onion Router) is a network of proxy nodes set up to provide some privacy and anonymity to
|
||||
its users. Originally backed by the US Naval Research Laboratory, TOR became an Electronic Frontier
|
||||
Foundation (EFF) project three years ago. The system provides a way for whistleblowers and human
|
||||
rights workers to exchange information with journalists, among other things. The system also
|
||||
provides plenty of scope for
|
||||
mischief.]]></text>
|
||||
</topic>
|
||||
<topic position="-830,13" order="2" shape="line" id="1333668798">
|
||||
<text><![CDATA[Tor has hundreds of thousands of users around the world, according to its developers. The largest
|
||||
numbers of users are in the United States, the European Union and
|
||||
China.]]></text>
|
||||
</topic>
|
||||
<topic position="-920,38" order="3" shape="line" id="900915922">
|
||||
<text><![CDATA[The first is the use by embassies of the Tor product to obfusticate their communications. This is a
|
||||
reasonable response to the assumed traffic monitoring by the host
|
||||
country.]]></text>
|
||||
</topic>
|
||||
</topic>
|
||||
<topic position="740,38" order="4" text="manipulations" shape="line" shrink="true" id="1072807557">
|
||||
<topic position="-740,1" order="0" text="data from exit node eavesdropping" shape="line" id="587439201">
|
||||
|
@ -383,7 +383,11 @@
|
||||
<topic position="560,-112" order="0" text="Number of projects conducted by companies in cooperation with innovation infrastructure" shape="line" id="383"/>
|
||||
<topic position="650,-87" order="1" text="Scope and intensity of use of services offered to firms" shape="line" id="325"/>
|
||||
<topic position="740,-62" order="2" text="Number of companies supported by the infrastructure (training, information, consultations, etc.)" shape="line" id="384"/>
|
||||
<topic position="830,-37" order="3" text="Increase in the number of business applying for public support programmes (regional, federal, international) " shape="line" id="401"/>
|
||||
<topic position="830,-37" order="3" shape="line" id="401">
|
||||
<text><![CDATA[Increase in the number of business applying for public support programmes (regional, federal,
|
||||
international)
|
||||
]]></text>
|
||||
</topic>
|
||||
</topic>
|
||||
<topic position="-650,-37" order="2" text="Degree of access" shape="line" id="182">
|
||||
<topic position="650,-74" order="0" text="Level of awareness" shape="line" id="52">
|
||||
|
@ -1,6 +1,8 @@
|
||||
<map name="enc" version="tango">
|
||||
<topic central="true" text="Artigos GF comentários interessantes" id="1">
|
||||
<topic position="-200,-50" order="1" text="Baraloto et al. 2010. Functional trait variation and sampling strategies in species-rich plant communities" shape="rectagle" id="5" bgColor="#cccccc">
|
||||
<topic position="-200,-50" order="1" shape="rectagle" id="5" bgColor="#cccccc">
|
||||
<text><![CDATA[Baraloto et al. 2010. Functional trait variation and sampling strategies in species-rich plant
|
||||
communities]]></text>
|
||||
<topic position="-200,-350" order="1" text="undefined" shape="line" id="6"/>
|
||||
<topic position="290,-150" order="0" shape="line" id="7">
|
||||
<text><![CDATA[However, the fast pace of
|
||||
@ -23,9 +25,20 @@
|
||||
of different sampling designs and intensities for
|
||||
different questions and systems.]]></text>
|
||||
</topic>
|
||||
<topic position="470,-100" order="2" text="Falar que a escolha das categorias de sucessão e dos parâmetros ou característica dos indivíduos que serão utilizadas dependera da facilidade de coleta dos dados e do custo monetário e temporal." shape="line" id="9"/>
|
||||
<topic position="560,-75" order="3" text="Ver se classifica sucessão por densidade de tronco para citar no artigo como exemplo de outros atributos além de germinação e ver se e custoso no tempo e em dinheiro" shape="line" id="12"/>
|
||||
<topic position="650,-50" order="4" text="Intensas amostragens de experimentos simples tem maior retorno em acurácia de estimativa e de custo tb." shape="line" id="13"/>
|
||||
<topic position="470,-100" order="2" shape="line" id="9">
|
||||
<text><![CDATA[Falar que a escolha das categorias de sucessão e dos parâmetros ou característica dos indivíduos que
|
||||
serão utilizadas dependera da facilidade de coleta dos dados e do custo monetário e
|
||||
temporal.]]></text>
|
||||
</topic>
|
||||
<topic position="560,-75" order="3" shape="line" id="12">
|
||||
<text><![CDATA[Ver se classifica sucessão por densidade de tronco para citar no artigo como exemplo de outros
|
||||
atributos além de germinação e ver se e custoso no tempo e em
|
||||
dinheiro]]></text>
|
||||
</topic>
|
||||
<topic position="650,-50" order="4" shape="line" id="13">
|
||||
<text><![CDATA[Intensas amostragens de experimentos simples tem maior retorno em acurácia de estimativa e de custo
|
||||
tb.]]></text>
|
||||
</topic>
|
||||
<topic position="740,-25" order="5" shape="line" id="14">
|
||||
<text><![CDATA[With regard to estimating mean trait values, strategies
|
||||
alternative to BRIDGE were consistently cost-effective. On
|
||||
@ -60,7 +73,20 @@
|
||||
for a large number of tree species obtained through vegetation
|
||||
monitoring studies.]]></text>
|
||||
</topic>
|
||||
<topic position="470,-87" order="2" text="Falar no artigo que esse trabalho fala que é inadequada a divisão entre pioneira e não pioneira devido a grande variação que há entre elas. Além de terem descoberto que durante a ontogenia a resposta a luminosidade muda dentro de uma mesma espécie. Porém recomendar que essa classificação continue sendo usada em curto prazo enquanto não há informações confiáveis suficiente para esta simples classificação. Outras classificações como esta do artigo são bem vinda, contanto que tenham dados confiáveis. Porém dados estáticos já são difíceis de se obter, dados temporais, como taxa de crescimento em diâmetro ou altura, são mais difíceis ainda. Falar que vários tipos de classificações podem ser utilizadas e quanto mais detalhe melhor, porém os dados é que são mais limitantes. Se focarmos em dados de germinação e crescimento limitantes, como sugerem sainete e whitmore, da uma idéia maismrápida e a curto prazo da classificação destas espécies. Depois com o tempo conseguiremos construir classificações mais detalhadas e com mais dados confiáveis. " shape="line" id="24"/>
|
||||
<topic position="470,-87" order="2" shape="line" id="24">
|
||||
<text><![CDATA[Falar no artigo que esse trabalho fala que é inadequada a divisão entre pioneira e não pioneira
|
||||
devido a grande variação que há entre elas. Além de terem descoberto que durante a ontogenia a
|
||||
resposta a luminosidade muda dentro de uma mesma espécie. Porém recomendar que essa classificação
|
||||
continue sendo usada em curto prazo enquanto não há informações confiáveis suficiente para esta
|
||||
simples classificação. Outras classificações como esta do artigo são bem vinda, contanto que tenham
|
||||
dados confiáveis. Porém dados estáticos já são difíceis de se obter, dados temporais, como taxa de
|
||||
crescimento em diâmetro ou altura, são mais difíceis ainda. Falar que vários tipos de classificações
|
||||
podem ser utilizadas e quanto mais detalhe melhor, porém os dados é que são mais limitantes. Se
|
||||
focarmos em dados de germinação e crescimento limitantes, como sugerem sainete e whitmore, da uma
|
||||
idéia maismrápida e a curto prazo da classificação destas espécies. Depois com o tempo conseguiremos
|
||||
construir classificações mais detalhadas e com mais dados confiáveis.
|
||||
]]></text>
|
||||
</topic>
|
||||
<topic position="560,-62" order="3" shape="line" id="25">
|
||||
<text><![CDATA[Our approach avoided preconceived notions of successional
|
||||
behavior or shade tolerance of tree species by developing an objective
|
||||
|
@ -15,9 +15,20 @@
|
||||
<link url="http://freemind.sourceforge.net/wiki/index.php/Main_Page#Download_and_install" urlType="url"/>
|
||||
</topic>
|
||||
</topic>
|
||||
<topic position="-380,-187" order="1" text="To install FreeMind on Microsoft Windows, install Java from Sun and install FreeMind using FreeMind installer." shape="line" id="139664576" fontStyle=";;;;;;#111111;;;"/>
|
||||
<topic position="-470,-162" order="2" text="To install FreeMind on Linux, download Java Runtime Environment and FreeMind application itself. First install Java, then unpack FreeMind. To run FreeMind, execute freemind.sh." shape="line" id="1380352758" fontStyle=";;;;;;#111111;;;"/>
|
||||
<topic position="-560,-137" order="3" text="On Microsoft Windows and Mac OS X, you can also simply double click the file freemind.jar located at the folder lib to run FreeMind." shape="line" id="1808511462" fontStyle=";;;;;;#111111;;;"/>
|
||||
<topic position="-380,-187" order="1" shape="line" id="139664576" fontStyle=";;;;;;#111111;;;">
|
||||
<text><![CDATA[To install FreeMind on Microsoft Windows, install Java from Sun and install FreeMind using FreeMind
|
||||
installer.]]></text>
|
||||
</topic>
|
||||
<topic position="-470,-162" order="2" shape="line" id="1380352758" fontStyle=";;;;;;#111111;;;">
|
||||
<text><![CDATA[To install FreeMind on Linux, download Java Runtime Environment and FreeMind application itself.
|
||||
First install Java, then unpack FreeMind. To run FreeMind, execute
|
||||
freemind.sh.]]></text>
|
||||
</topic>
|
||||
<topic position="-560,-137" order="3" shape="line" id="1808511462" fontStyle=";;;;;;#111111;;;">
|
||||
<text><![CDATA[On Microsoft Windows and Mac OS X, you can also simply double click the file freemind.jar located at
|
||||
the folder lib to run
|
||||
FreeMind.]]></text>
|
||||
</topic>
|
||||
</topic>
|
||||
<topic position="380,-137" order="1" text="Use it - tutorials" shape="line" id="1" fontStyle=";;;;SansSerif;8;#990000;italic;;">
|
||||
<topic position="-380,-174" order="0" text="Main Page for FreeMind" shape="line" id="135530020" fontStyle=";;;;;;#111111;;;">
|
||||
@ -75,8 +86,17 @@ Ctrl + F in your browser?]]></note>
|
||||
<topic position="-560,-74" order="1" text="Download the applet, that is freemind-browser." shape="line" id="372008388" fontStyle=";;;;;;#111111;;;">
|
||||
<link url="http://sourceforge.net/project/showfiles.php?group_id=7118" urlType="url"/>
|
||||
</topic>
|
||||
<topic position="-650,-49" order="2" text="The downloaded archive contains freemindbrowser.jar and freemindbrowser.html. Create a link from your page to freemindbrowser.html. In freemindbrowser.html change the path inside so that it points to your mind map." shape="line" id="1459732301" fontStyle=";;;;;;#111111;;;"/>
|
||||
<topic position="-740,-24" order="3" text="Applet's jar file must be located at the same server as the map itself, for java security reasons. You have to upload the FreeMind applet jar file and your mind map file to your web site." shape="line" id="240467473" fontStyle=";;;;;;#111111;;;"/>
|
||||
<topic position="-650,-49" order="2" shape="line" id="1459732301" fontStyle=";;;;;;#111111;;;">
|
||||
<text><![CDATA[The downloaded archive contains freemindbrowser.jar and freemindbrowser.html. Create a link from
|
||||
your page to freemindbrowser.html. In freemindbrowser.html change the path inside so that it points
|
||||
to your mind
|
||||
map.]]></text>
|
||||
</topic>
|
||||
<topic position="-740,-24" order="3" shape="line" id="240467473" fontStyle=";;;;;;#111111;;;">
|
||||
<text><![CDATA[Applet's jar file must be located at the same server as the map itself, for java security reasons.
|
||||
You have to upload the FreeMind applet jar file and your mind map file to your web
|
||||
site.]]></text>
|
||||
</topic>
|
||||
</topic>
|
||||
</topic>
|
||||
</topic>
|
||||
@ -110,7 +130,9 @@ and "How to do?" structure.]]></note>
|
||||
</topic>
|
||||
<topic position="-740,-24" order="2" shape="line" id="119084350" fontStyle=";;;;;;#111111;;;">
|
||||
<text><![CDATA[The downloaded archive contains visorFreemind.swf, flashobject.js and mindmaps.html.
|
||||
Edit mindmap.html to point to your mm file and create a link from your page to this file. Flash enabled browsers will then open the file for browsing.]]></text>
|
||||
Edit mindmap.html to point to your mm file and create a link from your page to this file. Flash
|
||||
enabled browsers will then open the file for
|
||||
browsing.]]></text>
|
||||
</topic>
|
||||
</topic>
|
||||
<topic position="650,-12" order="1" text="Include map in Powerpoint as Flash image" shape="line" id="753859789" fontStyle=";;;;;;#111111;;;">
|
||||
|
@ -3,8 +3,17 @@
|
||||
<text><![CDATA[Writing an Essay
|
||||
With FreeMind]]></text>
|
||||
<topic position="200,-200" order="0" text="Getting Started" shape="line" shrink="true" id="60307947" fontStyle=";;;;SansSerif;8;#0033ff;;;" bgColor="undefined">
|
||||
<topic position="200,-150" order="0" text="The first thing you'll want to do is to create a new FreeMind file for your essay. Select File->New on the menu, and a blank file will appear. " shape="line" id="484974719" fontStyle=";;;;SansSerif;8;#00b439;;;" bgColor="undefined"/>
|
||||
<topic position="-290,-250" order="0" text="Next, click in the centre of the map, and replace the text there with the essay title you have chosen. It's good to have the question you're answering before you the whole time, so you can immediately see how your ideas relate to it." shape="line" id="1072554383" fontStyle=";;;;SansSerif;8;#00b439;;;" bgColor="undefined"/>
|
||||
<topic position="200,-150" order="0" shape="line" id="484974719" fontStyle=";;;;SansSerif;8;#00b439;;;" bgColor="undefined">
|
||||
<text><![CDATA[The first thing you'll want to do is to create a new FreeMind file for your essay. Select File->New
|
||||
on the menu, and a blank file will appear.
|
||||
]]></text>
|
||||
</topic>
|
||||
<topic position="-290,-250" order="0" shape="line" id="1072554383" fontStyle=";;;;SansSerif;8;#00b439;;;" bgColor="undefined">
|
||||
<text><![CDATA[Next, click in the centre of the map, and replace the text there with the essay title you have
|
||||
chosen. It's good to have the question you're answering before you the whole time, so you can
|
||||
immediately see how your ideas relate to
|
||||
it.]]></text>
|
||||
</topic>
|
||||
<topic position="-380,-225" order="1" shape="line" id="1631286703" fontStyle=";;;;SansSerif;8;#00b439;;;" bgColor="undefined">
|
||||
<text><![CDATA[<!--
|
||||
p { margin-top: 0 }
|
||||
@ -22,9 +31,18 @@ With FreeMind]]></text>
|
||||
<topic position="-470,-200" order="2" text="You're now ready to start work on the essay." shape="line" id="538231078" fontStyle=";;;;SansSerif;8;#00b439;;;" bgColor="undefined"/>
|
||||
</topic>
|
||||
<topic position="-290,-62" order="0" text="The process of research" shape="line" shrink="true" id="1886958546" fontStyle=";;;;SansSerif;8;#0033ff;;;" bgColor="undefined">
|
||||
<topic position="290,-124" order="0" text="If a question is worth asking at all (and be generous to your teachers, and assume that their question is!), then it's not going to have the kind of answer that you can just make up on the spot. It will require research." shape="line" id="499702363" fontStyle=";;;;SansSerif;8;#00b439;;;" bgColor="undefined"/>
|
||||
<topic position="290,-124" order="0" shape="line" id="499702363" fontStyle=";;;;SansSerif;8;#00b439;;;" bgColor="undefined">
|
||||
<text><![CDATA[If a question is worth asking at all (and be generous to your teachers, and assume that their
|
||||
question is!), then it's not going to have the kind of answer that you can just make up on the spot.
|
||||
It will require
|
||||
research.]]></text>
|
||||
</topic>
|
||||
<topic position="380,-99" order="1" text="Research requires both finding things out about the world, and hard thinking." shape="line" id="1374284784" fontStyle=";;;;SansSerif;8;#00b439;;;" bgColor="undefined"/>
|
||||
<topic position="470,-74" order="2" text="FreeMind helps you with both aspects of research. FreeMind helps you to capture all the new information you need for your essay, and also to order your thoughts." shape="line" id="1038997740" fontStyle=";;;;SansSerif;8;#00b439;;;" bgColor="undefined"/>
|
||||
<topic position="470,-74" order="2" shape="line" id="1038997740" fontStyle=";;;;SansSerif;8;#00b439;;;" bgColor="undefined">
|
||||
<text><![CDATA[FreeMind helps you with both aspects of research. FreeMind helps you to capture all the new
|
||||
information you need for your essay, and also to order your
|
||||
thoughts.]]></text>
|
||||
</topic>
|
||||
<topic position="560,-49" order="3" text="FreeMind does this by facilitating:" shape="line" id="1522470300" fontStyle=";;;;SansSerif;8;#00b439;;;" bgColor="undefined">
|
||||
<topic position="-560,-99" order="0" text="Taking Notes" shape="line" id="1963065372" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<link url="http://#Freemind_Link_513978291" urlType="url"/>
|
||||
@ -51,23 +69,46 @@ With FreeMind]]></text>
|
||||
</topic>
|
||||
<topic position="-380,-37" order="1" text="Planning an Essay" shape="line" shrink="true" id="1034561457" fontStyle=";;;;SansSerif;8;#0033ff;;;" bgColor="undefined">
|
||||
<topic position="380,-87" order="0" text="Brainstorming" shape="line" shrink="true" id="1" fontStyle=";;;;SansSerif;8;#00b439;;;" bgColor="undefined">
|
||||
<topic position="-380,-162" order="0" text="Brainstorming is a way of trying to geting all your ideas about a topic down on paper as quickly as possible." shape="line" id="1420002558" fontStyle=";;;;SansSerif;8;#990000;;;"/>
|
||||
<topic position="-470,-137" order="1" text="The key to successful brainstorming is to let everything come out -- don't worry if it sounds goofy or dumb, just put it down! There'll be plenty of time for editing later." shape="line" id="790677993" fontStyle=";;;;SansSerif;8;#990000;;;"/>
|
||||
<topic position="-380,-162" order="0" shape="line" id="1420002558" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<text><![CDATA[Brainstorming is a way of trying to geting all your ideas about a topic down on paper as quickly as
|
||||
possible.]]></text>
|
||||
</topic>
|
||||
<topic position="-470,-137" order="1" shape="line" id="790677993" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<text><![CDATA[The key to successful brainstorming is to let everything come out -- don't worry if it sounds goofy
|
||||
or dumb, just put it down! There'll be plenty of time for editing
|
||||
later.]]></text>
|
||||
</topic>
|
||||
<topic position="-560,-112" order="2" text="To brainstorm with FreeMind, you'll need knowledge of two keys, plus your imagination." shape="line" id="916520369" fontStyle=";;;;SansSerif;8;#990000;;;"/>
|
||||
<topic position="-650,-87" order="3" text="Pressing Enter adds another idea at the same level you currently are at." shape="line" id="888234871" fontStyle=";;;;SansSerif;8;#990000;;;"/>
|
||||
<topic position="-740,-62" order="4" text="Pressing Insert adds another idea as a subidea of the one you've currently selected." shape="line" id="1371557121" fontStyle=";;;;SansSerif;8;#990000;;;"/>
|
||||
<topic position="-830,-37" order="5" text="(The imagination you'll have to supply yourself!)" shape="line" id="443781940" fontStyle=";;;;SansSerif;8;#990000;;;"/>
|
||||
</topic>
|
||||
<topic position="470,-62" order="1" text="Taking Notes" shape="line" shrink="true" id="513978291" fontStyle=";;;;SansSerif;8;#00b439;;;" bgColor="undefined">
|
||||
<topic position="-470,-124" order="0" text="Different people take notes in different ways. Whichever way you take notes, you should find FreeMind helpful." shape="line" id="709453371" fontStyle=";;;;SansSerif;8;#990000;;;" bgColor="undefined"/>
|
||||
<topic position="-560,-99" order="1" text="One good way of using FreeMind is to add one node per book or article you read. Name the node a short version of the article title. " shape="line" id="249608113" fontStyle=";;;;SansSerif;8;#990000;;;" bgColor="undefined"/>
|
||||
<topic position="-650,-74" order="2" text="Then add your notes on the article as a node note. To insert a note, go to the View menu, and select "Show Note Window". You can then add your notes below." shape="line" shrink="true" id="1470413282" fontStyle=";;;;SansSerif;8;#990000;;;" bgColor="undefined">
|
||||
<topic position="650,-86" order="0" text="The Notes WIndow can get in the way (particularly if you have a small screen). So you may find it helpful to hide it after you've added your note, by selecting "Show Note Window" again from the menu." shape="line" id="81630074" fontStyle=";;;;SansSerif;8;#111111;;;"/>
|
||||
<topic position="-470,-124" order="0" shape="line" id="709453371" fontStyle=";;;;SansSerif;8;#990000;;;" bgColor="undefined">
|
||||
<text><![CDATA[Different people take notes in different ways. Whichever way you take notes, you should find
|
||||
FreeMind
|
||||
helpful.]]></text>
|
||||
</topic>
|
||||
<topic position="-560,-99" order="1" shape="line" id="249608113" fontStyle=";;;;SansSerif;8;#990000;;;" bgColor="undefined">
|
||||
<text><![CDATA[One good way of using FreeMind is to add one node per book or article you read. Name the node a
|
||||
short version of the article title.
|
||||
]]></text>
|
||||
</topic>
|
||||
<topic position="-650,-74" order="2" shape="line" shrink="true" id="1470413282" fontStyle=";;;;SansSerif;8;#990000;;;" bgColor="undefined">
|
||||
<text><![CDATA[Then add your notes on the article as a node note. To insert a note, go to the View menu, and
|
||||
select "Show Note Window". You can then add your notes
|
||||
below.]]></text>
|
||||
<topic position="650,-86" order="0" shape="line" id="81630074" fontStyle=";;;;SansSerif;8;#111111;;;">
|
||||
<text><![CDATA[The Notes WIndow can get in the way (particularly if you have a small screen). So you may find it
|
||||
helpful to hide it after you've added your note, by selecting "Show Note Window" again from the
|
||||
menu.]]></text>
|
||||
</topic>
|
||||
</topic>
|
||||
<topic position="-740,-49" order="3" text="Don't forget to take full references for all the quotations you use. " shape="line" id="1226928695" fontStyle=";;;;SansSerif;8;#990000;;;" bgColor="undefined"/>
|
||||
<topic position="-830,-24" order="4" text="FreeMind can also do some clever things with web links and email addresses." shape="line" shrink="true" id="1195317986" fontStyle=";;;;SansSerif;8;#990000;;;" bgColor="undefined">
|
||||
<topic position="830,-86" order="0" shape="line" id="1167090962" fontStyle=";;;;SansSerif;8;#111111;;;">
|
||||
<text><![CDATA[If you're researching on the web, then FreeMind can automatically link your note to the web page you're writing about.
|
||||
<text><![CDATA[If you're researching on the web, then FreeMind can automatically link your note to the web page
|
||||
you're writing about.
|
||||
]]></text>
|
||||
</topic>
|
||||
<topic position="920,-61" order="1" text="Make your note, then select ->Insert->Hyperlink (Text Field) from the menu. " shape="line" id="1374825576" fontStyle=";;;;SansSerif;8;#111111;;;"/>
|
||||
@ -76,8 +117,15 @@ With FreeMind]]></text>
|
||||
<link url="http://members.tripod.com/~lklivingston/essay/" urlType="url"/>
|
||||
</topic>
|
||||
</topic>
|
||||
<topic position="1100,-11" order="3" text="You can also make links to files on your own computer. To do this select ->Insert->Hyperlink (File Chooser) from the menu." shape="line" id="1508333448" fontStyle=";;;;SansSerif;8;#111111;;;"/>
|
||||
<topic position="1190,14" order="4" text="To link a node to an email address, select ->Insert->Hyperink (Text Field) from the menu. Type "mailto: " plus the person's email address." shape="line" id="899556633" fontStyle=";;;;SansSerif;8;#111111;;;">
|
||||
<topic position="1100,-11" order="3" shape="line" id="1508333448" fontStyle=";;;;SansSerif;8;#111111;;;">
|
||||
<text><![CDATA[You can also make links to files on your own computer. To do this select ->Insert->Hyperlink (File
|
||||
Chooser) from the
|
||||
menu.]]></text>
|
||||
</topic>
|
||||
<topic position="1190,14" order="4" shape="line" id="899556633" fontStyle=";;;;SansSerif;8;#111111;;;">
|
||||
<text><![CDATA[To link a node to an email address, select ->Insert->Hyperink (Text Field) from the menu. Type
|
||||
"mailto: " plus the person's email
|
||||
address.]]></text>
|
||||
<topic position="-1190,2" order="0" text="Here's an example email address!" shape="line" id="433629028" fontStyle=";;;;;;#111111;;;">
|
||||
<link url="http://mailto:%20president@whitehouse.gov" urlType="mail"/>
|
||||
</topic>
|
||||
@ -85,26 +133,58 @@ With FreeMind]]></text>
|
||||
</topic>
|
||||
</topic>
|
||||
<topic position="560,-37" order="2" text="Sifting and organising your ideas" shape="line" shrink="true" id="331016293" fontStyle=";;;;SansSerif;8;#00b439;;;" bgColor="undefined">
|
||||
<topic position="-560,-124" order="0" text="After you've done a bit of brainstorming, and have written all the ideas you can think of, it's time to start sorting your ideas out." shape="line" id="136989740" fontStyle=";;;;SansSerif;8;#990000;;;"/>
|
||||
<topic position="-650,-99" order="1" text="You may well find that you've surprised yourself in the brainstorming process, and that you've come up with ideas that you didn't think you believed. Well done if you've managed to surprise yourself!" shape="line" id="294466318" fontStyle=";;;;SansSerif;8;#990000;;;"/>
|
||||
<topic position="-740,-74" order="2" text="The next thing to do is to take a step back and just look at the different ideas you've come up with. What central themes do you notice? Which ideas seem to be more fundamental, and which less important?" shape="line" id="847367743" fontStyle=";;;;SansSerif;8;#990000;;;"/>
|
||||
<topic position="-560,-124" order="0" shape="line" id="136989740" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<text><![CDATA[After you've done a bit of brainstorming, and have written all the ideas you can think of, it's time
|
||||
to start sorting your ideas
|
||||
out.]]></text>
|
||||
</topic>
|
||||
<topic position="-650,-99" order="1" shape="line" id="294466318" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<text><![CDATA[You may well find that you've surprised yourself in the brainstorming process, and that you've come
|
||||
up with ideas that you didn't think you believed. Well done if you've managed to surprise
|
||||
yourself!]]></text>
|
||||
</topic>
|
||||
<topic position="-740,-74" order="2" shape="line" id="847367743" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<text><![CDATA[The next thing to do is to take a step back and just look at the different ideas you've come up
|
||||
with. What central themes do you notice? Which ideas seem to be more fundamental, and which less
|
||||
important?]]></text>
|
||||
</topic>
|
||||
<topic position="-830,-49" order="3" shape="line" id="550806254" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<text><![CDATA[After you've looked at your map for a bit, it's time to start rearranging your ideas. You can either rearrage your ideas by dragging and dropping them, or with the cursor keys. (CTRL + UP and CTRL DOWN move an idea up or down; CTRL LEFT and CTRL RIGHT move it left or right)
|
||||
<text><![CDATA[After you've looked at your map for a bit, it's time to start rearranging your ideas. You can either
|
||||
rearrage your ideas by dragging and dropping them, or with the cursor keys. (CTRL + UP and CTRL DOWN
|
||||
move an idea up or down; CTRL LEFT and CTRL RIGHT move it left or right)
|
||||
]]></text>
|
||||
</topic>
|
||||
<topic position="-920,-24" order="4" text="The first think to do is to move all the ideas together that seem to belong together. Are there duplications? Could some ideas usefully be combined? Could some ideas be usefully split?" shape="line" shrink="true" id="992055866" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<topic position="-920,-24" order="4" shape="line" shrink="true" id="992055866" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<text><![CDATA[The first think to do is to move all the ideas together that seem to belong together. Are there
|
||||
duplications? Could some ideas usefully be combined? Could some ideas be usefully
|
||||
split?]]></text>
|
||||
<topic position="920,-36" order="0" text="To split an idea, select it, type backspace (the editor appears), then select "split" and then okay." shape="line" id="72639222" fontStyle=";;;;;;#111111;;;"/>
|
||||
</topic>
|
||||
<topic position="-1010,1" order="5" text="You should carry on sifting and organising till you feel that you know what the main point is that you want to make in the essay." shape="line" id="337591176" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<topic position="-1010,1" order="5" shape="line" id="337591176" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<text><![CDATA[You should carry on sifting and organising till you feel that you know what the main point is that
|
||||
you want to make in the
|
||||
essay.]]></text>
|
||||
<note><![CDATA[You should also make sure that the main point you're making in the essay provides a full answer to the question you have been asked, or you will probably be marked down for irrelevance.]]></note>
|
||||
</topic>
|
||||
<topic position="-1100,26" order="6" text="When you've done this, save a NEW copy of your map. We'll use this to make the outline of the argument for your essay. (It's a good idea to save a copy under a different name before you make major changes -- this way you can always go back.) To do this, go to File, and then Save As on the menu, and call the new one it something like "Essay_Outline v1". " shape="line" id="506089558" fontStyle=";;;;SansSerif;8;#990000;;;"/>
|
||||
<topic position="-1100,26" order="6" shape="line" id="506089558" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<text><![CDATA[When you've done this, save a NEW copy of your map. We'll use this to make the outline of the
|
||||
argument for your essay. (It's a good idea to save a copy under a different name before you make
|
||||
major changes -- this way you can always go back.) To do this, go to File, and then Save As on the
|
||||
menu, and call the new one it something like "Essay_Outline v1".
|
||||
]]></text>
|
||||
</topic>
|
||||
</topic>
|
||||
<topic position="650,-12" order="3" text="Outlining" shape="line" shrink="true" id="341601142" fontStyle=";;;;SansSerif;8;#00b439;;;" bgColor="undefined">
|
||||
<topic position="-650,-87" order="0" text="Now you know what your main point is, you can write an outline of the argument of the essay." shape="line" id="190098699" fontStyle=";;;;SansSerif;8;#990000;;;"/>
|
||||
<topic position="-740,-62" order="1" text="The point of producing an outline is to work out how you will argue for your essay's main claim." shape="line" id="132833105" fontStyle=";;;;SansSerif;8;#990000;;;"/>
|
||||
<topic position="-830,-37" order="2" text="The first thing to do is to change the text of the central node to your main claim. (Tip: a quick way to go to the central node is to press Escape)" shape="line" id="1132818589" fontStyle=";;;;SansSerif;8;#990000;;;"/>
|
||||
<topic position="-920,-12" order="3" text="The next thing to do is to look at the material you've collected, and divide it into the following categories." shape="line" shrink="true" id="957387789" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<topic position="-830,-37" order="2" shape="line" id="1132818589" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<text><![CDATA[The first thing to do is to change the text of the central node to your main claim. (Tip: a quick
|
||||
way to go to the central node is to press
|
||||
Escape)]]></text>
|
||||
</topic>
|
||||
<topic position="-920,-12" order="3" shape="line" shrink="true" id="957387789" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<text><![CDATA[The next thing to do is to look at the material you've collected, and divide it into the following
|
||||
categories.]]></text>
|
||||
<topic position="920,-62" order="0" text="Background material you need to understand the main claim." shape="line" shrink="true" id="1900247400" fontStyle=";;;;;;#111111;;;">
|
||||
<topic position="-920,-74" order="0" text="This will form your introduction." shape="line" id="1744947976" fontStyle=";;;;;;#111111;;;"/>
|
||||
</topic>
|
||||
@ -140,8 +220,16 @@ With FreeMind]]></text>
|
||||
</topic>
|
||||
</topic>
|
||||
<topic position="-1100,38" order="5" text="Taking account of objections" shape="line" shrink="true" id="90146370" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<topic position="1100,-12" order="0" text="Now you can be pretty sure that someone who thinks that closed source software is superior to open source software will have already heard of your arguments in favour, and might have some objections or counter-arguments to them." shape="line" id="594053771" fontStyle=";;;;;;#111111;;;"/>
|
||||
<topic position="1190,13" order="1" text="So you also need to think about the objections someone might have to your arguments in favour of your main point." shape="line" shrink="true" id="703718185" fontStyle=";;;;;;#111111;;;">
|
||||
<topic position="1100,-12" order="0" shape="line" id="594053771" fontStyle=";;;;;;#111111;;;">
|
||||
<text><![CDATA[Now you can be pretty sure that someone who thinks that closed source software is superior to open
|
||||
source software will have already heard of your arguments in favour, and might have some objections
|
||||
or counter-arguments to
|
||||
them.]]></text>
|
||||
</topic>
|
||||
<topic position="1190,13" order="1" shape="line" shrink="true" id="703718185" fontStyle=";;;;;;#111111;;;">
|
||||
<text><![CDATA[So you also need to think about the objections someone might have to your arguments in favour of
|
||||
your main
|
||||
point.]]></text>
|
||||
<topic position="-1190,1" order="0" text="For example, many people dispute that open source software is more innovative." shape="line" id="394067842" fontStyle=";;;;;;#111111;;;"/>
|
||||
</topic>
|
||||
<topic position="1280,38" order="2" text="And you also need to think about how you would respond to the arguments against your main point." shape="line" id="634073269" fontStyle=";;;;;;#111111;;;"/>
|
||||
@ -150,32 +238,70 @@ With FreeMind]]></text>
|
||||
</topic>
|
||||
</topic>
|
||||
<topic position="-470,-12" order="2" text="From Outline to Finished Work" shape="line" shrink="true" id="1755853195" fontStyle=";;;;SansSerif;8;#0033ff;;;" bgColor="undefined">
|
||||
<topic position="470,-74" order="0" text="Writing the outline of your essay is the hard part. Once you have a good outline, it's much easier to write a good essay or a good presentation." shape="line" id="1449950809" fontStyle=";;;;SansSerif;8;#00b439;;;" bgColor="undefined"/>
|
||||
<topic position="470,-74" order="0" shape="line" id="1449950809" fontStyle=";;;;SansSerif;8;#00b439;;;" bgColor="undefined">
|
||||
<text><![CDATA[Writing the outline of your essay is the hard part. Once you have a good outline, it's much easier
|
||||
to write a good essay or a good
|
||||
presentation.]]></text>
|
||||
</topic>
|
||||
<topic position="560,-49" order="1" text="You'll probably find it easier to to the actual writing of the essay in your wordprocessor." shape="line" id="1607766784" fontStyle=";;;;SansSerif;8;#00b439;;;" bgColor="undefined"/>
|
||||
<topic position="650,-24" order="2" text="Exporting your outline to your Wordprocessor" shape="line" shrink="true" id="877777095" fontStyle=";;;;SansSerif;8;#00b439;;;" bgColor="undefined">
|
||||
<topic position="-650,-99" order="0" text="FreeMind currently exports much better to OpenOffice than to Microsoft Word. So if you don't yet have OpenOffice, it's well worth downloading it (it's free)." shape="line" shrink="true" id="1821901940" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<topic position="650,-111" order="0" text="But if you don't want to use OpenOffice, you can export your map to HTML, and then load this into Microsoft Word." shape="line" id="1291053034" fontStyle=";;;;;;#111111;;;"/>
|
||||
<topic position="-650,-99" order="0" shape="line" shrink="true" id="1821901940" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<text><![CDATA[FreeMind currently exports much better to OpenOffice than to Microsoft Word. So if you don't yet
|
||||
have OpenOffice, it's well worth downloading it (it's
|
||||
free).]]></text>
|
||||
<topic position="650,-111" order="0" shape="line" id="1291053034" fontStyle=";;;;;;#111111;;;">
|
||||
<text><![CDATA[But if you don't want to use OpenOffice, you can export your map to HTML, and then load this into
|
||||
Microsoft
|
||||
Word.]]></text>
|
||||
</topic>
|
||||
</topic>
|
||||
<topic position="-740,-74" order="1" text="Once you've finished your outline, you're ready to export." shape="line" id="1616381675" fontStyle=";;;;SansSerif;8;#990000;;;"/>
|
||||
<topic position="-830,-49" order="2" text="You should be aware of the difference that folding makes." shape="line" shrink="true" id="1621587642" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<topic position="830,-86" order="0" text="Nodes which are visible will come out as numbered headings, whilst nodes which are hidden come out as bullet points." shape="line" id="391880567" fontStyle=";;;;;;#111111;;;"/>
|
||||
<topic position="830,-86" order="0" shape="line" id="391880567" fontStyle=";;;;;;#111111;;;">
|
||||
<text><![CDATA[Nodes which are visible will come out as numbered headings, whilst nodes which are hidden come out
|
||||
as bullet
|
||||
points.]]></text>
|
||||
</topic>
|
||||
<topic position="920,-61" order="1" text="So take a minute to fold and unfold the nodes how you want them before you export." shape="line" id="1257873385" fontStyle=";;;;;;#111111;;;"/>
|
||||
<topic position="1010,-36" order="2" text="For a normal length essay, you will probably only want two levels of headings showing." shape="line" id="1342542809" fontStyle=";;;;;;#111111;;;"/>
|
||||
</topic>
|
||||
<topic position="-920,-24" order="3" text="Export to OpenOffice by selecting File, then Export, then As OpenOffice Writer Document from the menu." shape="line" id="1527476759" fontStyle=";;;;SansSerif;8;#990000;;;"/>
|
||||
<topic position="-1010,1" order="4" text="Note: FreeMind does not (yet) have a spell checker. So you'll probably want to spell check the document before you do anything else. " shape="line" id="561611184" fontStyle=";;;;SansSerif;8;#990000;;;"/>
|
||||
<topic position="-1100,26" order="5" text="Once you've got your outline into OpenOffice, you can write the rest of the essay in your wordprocessor as normal." shape="line" id="1112076216" fontStyle=";;;;SansSerif;8;#990000;;;"/>
|
||||
<topic position="-920,-24" order="3" shape="line" id="1527476759" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<text><![CDATA[Export to OpenOffice by selecting File, then Export, then As OpenOffice Writer Document from the
|
||||
menu.]]></text>
|
||||
</topic>
|
||||
<topic position="-1010,1" order="4" shape="line" id="561611184" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<text><![CDATA[Note: FreeMind does not (yet) have a spell checker. So you'll probably want to spell check the
|
||||
document before you do anything else.
|
||||
]]></text>
|
||||
</topic>
|
||||
<topic position="-1100,26" order="5" shape="line" id="1112076216" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<text><![CDATA[Once you've got your outline into OpenOffice, you can write the rest of the essay in your
|
||||
wordprocessor as
|
||||
normal.]]></text>
|
||||
</topic>
|
||||
</topic>
|
||||
<topic position="740,1" order="3" text="Making a presentation" shape="line" shrink="true" id="781772166" fontStyle=";;;;SansSerif;8;#00b439;;;" bgColor="undefined">
|
||||
<topic position="-740,-74" order="0" text="FreeMind also provides a good way of outlining PowerPoint presentations." shape="line" id="1714771405" fontStyle=";;;;SansSerif;8;#990000;;;"/>
|
||||
<topic position="-830,-49" order="1" text="You'll need OpenOffice again." shape="line" id="233010529" fontStyle=";;;;SansSerif;8;#990000;;;"/>
|
||||
<topic position="-920,-24" order="2" text="Follow the instructions above to export your outline to OpenOffice." shape="line" id="1394183501" fontStyle=";;;;SansSerif;8;#990000;;;"/>
|
||||
<topic position="-1010,1" order="3" text="Once you have the outine in OpenOffice, select (from OpenOffice!) File, then Send to, then AutoAbstract to Presentation." shape="line" id="1549715849" fontStyle=";;;;SansSerif;8;#990000;;;"/>
|
||||
<topic position="-1010,1" order="3" shape="line" id="1549715849" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<text><![CDATA[Once you have the outine in OpenOffice, select (from OpenOffice!) File, then Send to, then
|
||||
AutoAbstract to
|
||||
Presentation.]]></text>
|
||||
</topic>
|
||||
<topic position="-1100,26" order="4" text="This automatically creates a PowerPoint presentation from your outline." shape="line" id="23655519" fontStyle=";;;;SansSerif;8;#990000;;;"/>
|
||||
<topic position="-1190,51" order="5" text="I've found that setting "Included Outline Levels" to 2, and "Subpoints per level" to 5 gives the best results." shape="line" id="1027338237" fontStyle=";;;;SansSerif;8;#990000;;;"/>
|
||||
<topic position="-1190,51" order="5" shape="line" id="1027338237" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<text><![CDATA[I've found that setting "Included Outline Levels" to 2, and "Subpoints per level" to 5 gives the
|
||||
best
|
||||
results.]]></text>
|
||||
</topic>
|
||||
</topic>
|
||||
<topic position="830,26" order="4" text="Things to check before you submit your essay" shape="line" shrink="true" id="1657086138" fontStyle=";;;;SansSerif;8;#00b439;;;" bgColor="undefined">
|
||||
<topic position="-830,-111" order="0" text="(This advice doesn't tell you anything about how to use FreeMind, but it may help you get a better mark in your essay!)" shape="line" id="1855894453" fontStyle=";;;;SansSerif;8;#990000;;;"/>
|
||||
<topic position="-830,-111" order="0" shape="line" id="1855894453" fontStyle=";;;;SansSerif;8;#990000;;;">
|
||||
<text><![CDATA[(This advice doesn't tell you anything about how to use FreeMind, but it may help you get a better
|
||||
mark in your
|
||||
essay!)]]></text>
|
||||
</topic>
|
||||
<topic position="-920,-86" order="1" text="Does my essay have a main claim?" shape="line" id="1803078302" fontStyle=";;;;SansSerif;8;#990000;;;" bgColor="undefined">
|
||||
<note><![CDATA[Another way of asking this question is can you sum up in a sentence what the main point is that your essay is making?) If you don't have a main claim (or don't know what your main claim is!), then your essay will not get a good mark. You are assessed on the quality of the argument you put forward for your main claim, and in order to be able to do this we (and you) need to know what your main claim is.]]></note>
|
||||
</topic>
|
||||
|
@ -0,0 +1,20 @@
|
||||
<map version="0.8.0">
|
||||
<node BACKGROUND_COLOR="#ffff66" COLOR="#000000" CREATED="1224015684472" ID="Freemind_Link_385211707" MODIFIED="1224195159797" TEXT="SQL Server 2005
 Tips and Tricks">
|
||||
<font BOLD="true" NAME="SansSerif" SIZE="16"/>
|
||||
<node BACKGROUND_COLOR="#ffff66" COLOR="#000000" CREATED="1224195222142" ID="_" LINK="http://freemind.sourceforge.net/wiki/extensions/freemind/flashwindow.php?startCollapsedToLevel=3&initLoadFile=/wiki/images/4/4e/SQLServerTips_Info.mm&mm_title=SQL%20Server%202005%20Tips%20-%20Getting%20Information" MODIFIED="1224538408496" POSITION="left" STYLE="bubble" TEXT="Getting Information">
|
||||
<font BOLD="true" NAME="SansSerif" SIZE="14"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#ffff66" COLOR="#000000" CREATED="1224205144286" ID="Freemind_Link_1304387208" LINK="http://freemind.sourceforge.net/wiki/extensions/freemind/flashwindow.php?startCollapsedToLevel=3&initLoadFile=/wiki/images/6/61/SQLServerTips_UpdateDelete.mm&mm_title=SQL%20Server%202005%20Tips%20-%20Updating%20and%20Deleting%20Based%20on%20Other%20Tables" MODIFIED="1224538615717" POSITION="left" STYLE="bubble" TEXT=" Updating and Deleting
Based On Other Tables">
|
||||
<font BOLD="true" NAME="SansSerif" SIZE="14"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#ffff66" COLOR="#000000" CREATED="1224216092083" ID="Freemind_Link_856256145" LINK="http://freemind.sourceforge.net/wiki/extensions/freemind/flashwindow.php?startCollapsedToLevel=3&initLoadFile=/wiki/images/6/61/SQLServerTips_PagingRecordSets.mm&mm_title=SQL%20Server%202005%20Tips%20-%20Paging%20Recordsets" MODIFIED="1224538497388" POSITION="right" STYLE="bubble" TEXT="Paging Record Sets">
|
||||
<font BOLD="true" NAME="SansSerif" SIZE="14"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#ffff66" COLOR="#000000" CREATED="1224450237211" ID="Freemind_Link_106052726" LINK="http://freemind.sourceforge.net/wiki/extensions/freemind/flashwindow.php?startCollapsedToLevel=3&initLoadFile=/wiki/images/f/f3/SQLServerTips_XMLDataType.mm&mm_title=SQL%20Server%202005%20Tips%20-%20XML%20Data%20Type" MODIFIED="1224538672765" POSITION="right" STYLE="bubble" TEXT="XML Data Type">
|
||||
<font BOLD="true" NAME="SansSerif" SIZE="14"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#ffff66" COLOR="#000000" CREATED="1224537176793" ID="Freemind_Link_1435104217" LINK="http://freemind.sourceforge.net/wiki/extensions/freemind/flashwindow.php?startCollapsedToLevel=3&initLoadFile=/wiki/images/0/04/SQLServerTips_Pivot.mm&mm_title=SQL%20Server%202005%20Tips%20-%20PIVOT%20and%20UNPIVOT" MODIFIED="1224538546060" POSITION="right" STYLE="bubble" TEXT="PIVOT and UNPIVOT">
|
||||
<font BOLD="true" NAME="SansSerif" SIZE="14"/>
|
||||
</node>
|
||||
</node>
|
||||
</map>
|
@ -0,0 +1,112 @@
|
||||
<map>
|
||||
<node CREATED="1203806914875" ID="Freemind_Link_1499076781" MODIFIED="1203807109625" TEXT="Anonymity on the Edge">
|
||||
<node CREATED="1213786150989" ID="Freemind_Link_858068095" MODIFIED="1213786154629" POSITION="right" TEXT="author">
|
||||
<node CREATED="1213786158644" ID="Freemind_Link_894658161" LINK="http://lukenotricks.blogspot.com/" MODIFIED="1213786191860" TEXT="Luke O'Connor"/>
|
||||
</node>
|
||||
<node CREATED="1203807210406" ID="Freemind_Link_474203765" MODIFIED="1203807217562" POSITION="left" TEXT="Embassy incident">
|
||||
<node CREATED="1203807764218" FOLDED="true" ID="Freemind_Link_1263348404" MODIFIED="1203807766296" TEXT="who">
|
||||
<node CREATED="1203807756875" ID="Freemind_Link_242191883" MODIFIED="1203807758281" TEXT="Dan Egerstad, the Swedish computer security"/>
|
||||
<node CREATED="1203810232281" ID="Freemind_Link_720929382" MODIFIED="1203810233390" TEXT="21-year-old "/>
|
||||
</node>
|
||||
<node CREATED="1203807770718" FOLDED="true" ID="Freemind_Link_1982200632" MODIFIED="1203807772406" TEXT="what">
|
||||
<node CREATED="1203807799843" ID="Freemind_Link_1786192306" MODIFIED="1203807802359" TEXT="obtained log-in and password information for 1,000 e-mail accounts belonging to foreign embassies, corporations and human rights organizations"/>
|
||||
<node CREATED="1203807966140" ID="Freemind_Link_258634955" MODIFIED="1203807967859" TEXT="when he posted on his web site the log-in information and passwords for 100 of the 1,000 e-mail accounts for which he obtained log-ins and passwords. (His site is no longer online). He posted the information, he said, because he felt it would be the most effective way to make the account owners aware that their communication had been compromised.">
|
||||
<node CREATED="1203808692312" ID="Freemind_Link_783703672" MODIFIED="1203808693734" TEXT="including one corporation that does more than $10bn in annual revenue."/>
|
||||
<node CREATED="1203809356890" ID="Freemind_Link_1648785444" MODIFIED="1203809358437" TEXT="request of American law enforcement agencies"/>
|
||||
</node>
|
||||
<node CREATED="1203807995781" ID="Freemind_Link_927456224" MODIFIED="1203807997765" TEXT="Initially, Egerstad refused to disclose how he obtained the log-ins and passwords. But then in September he revealed that he'd intercepted the information through five exit nodes that he'd set up on the Tor network in Asia, the US and Europe"/>
|
||||
<node CREATED="1203808059906" ID="Freemind_Link_642215802" MODIFIED="1203808061093" TEXT="Tor is used by people who want to maintain privacy and don't want anyone to know where they go on the web or with whom they communicate. Tor traffic is encrypted while it's enroute, but is decrypted as it leaves the exit node and goes to its final destination. Egerstad simply sniffed the plaintext traffic that passed through his five exit nodes to obtain the user names and passwords of e-mail accounts.">
|
||||
<node CREATED="1203809439953" ID="Freemind_Link_1211756003" MODIFIED="1203809441281" TEXT="#1 Five ToR exit nodes, at different locations in the world, equipped with our own packet-sniffer focused entirely on POP3 and IMAP traffic using a keyword-filter looking for words like “gov, government, embassy, military, war, terrorism, passport, visa” as well as domains belonging to governments. This was all set up after a small experiment looking into how many users encrypt their mail where one mail caught my eye and got me started thinking doing a large scale test. Each user is not only giving away his/her passwords but also every mail they read or download together with all other traffic such as web and instant messaging."/>
|
||||
</node>
|
||||
<node CREATED="1203808130203" ID="Freemind_Link_378589600" MODIFIED="1203808132296" TEXT="Egerstad didn't hack any systems to obtain the data and therefore says he didn't break any laws, but once he posted the log-in details for the accounts online he provided others with all the information they needed to breach the accounts and read sensitive correspondence stored in them."/>
|
||||
<node CREATED="1203809833968" ID="Freemind_Link_701607448" MODIFIED="1203809838140" TEXT="what he could read">
|
||||
<node CREATED="1203809826093" ID="Freemind_Link_1653141327" MODIFIED="1203809827390" TEXT="Victims of Egerstad's research project included embassies belonging to Australia, Japan, Iran, India and Russia. Egerstad also found accounts belonging to the foreign ministry of Iran, the United Kingdom's visa office in Nepal and the Defence Research and Development Organization in India's Ministry of Defence."/>
|
||||
<node CREATED="1203809811218" ID="Freemind_Link_293271973" MODIFIED="1203809812171" TEXT="In addition, Egerstad was able to read correspondence belonging to the Indian ambassador to China, various politicians in Hong Kong, workers in the Dalai Lama's liaison office and several human-rights groups in Hong Kong."/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1203808514000" FOLDED="true" ID="Freemind_Link_1054930706" MODIFIED="1203808516421" TEXT="when">
|
||||
<node CREATED="1203808517875" ID="Freemind_Link_355764311" MODIFIED="1203808528062" TEXT="August - Sept 2007"/>
|
||||
</node>
|
||||
<node CREATED="1203812325906" FOLDED="true" ID="Freemind_Link_1467573808" MODIFIED="1203812329968" TEXT="why?">
|
||||
<node CREATED="1203808766031" ID="Freemind_Link_126964183" MODIFIED="1203808767078" TEXT="But Egerstad remains convinced he did the right thing, saying it was the only way to call attention to problem that Tor officials have already warned about previously."/>
|
||||
<node CREATED="1203810502468" ID="Freemind_Link_38126740" MODIFIED="1203810503796" TEXT="withheld details on how he came into possession of the passwords, instead writing that "there is no exploit to publish, no vendor to contact"."/>
|
||||
</node>
|
||||
<node CREATED="1203807812937" FOLDED="true" ID="Freemind_Link_1493808593" MODIFIED="1648048527105" TEXT="response">
|
||||
<node CREATED="1203807849328" ID="Freemind_Link_1639195319" MODIFIED="1203807850500" TEXT="house raided on Monday by Swedish officials, who took him in for questioning"/>
|
||||
<node CREATED="1203807893390" ID="Freemind_Link_1911990641" MODIFIED="1203807894437" TEXT="While three of them took him to the local police headquarters for questioning, the other two agents ransacked his house and hauled away three computers, external hard drives, CDs, notebooks and various papers"/>
|
||||
<node CREATED="1203807930515" ID="Freemind_Link_1645583680" MODIFIED="1203807931812" TEXT="Egerstad hasn't been charged with anything but is under suspicion for breaking into computers, which he says he never did. Egerstad said the agents told him they were investigating him because he had "pissed off some foreign countries.""/>
|
||||
<node CREATED="1203808725843" ID="Freemind_Link_671508443" MODIFIED="1203808726937" TEXT="The posting of 100 official embassy passwords has made Egerstad a pariah in many circles. Publishing information that allows any old criminal to infiltrate sensitive government networks is a touchy thing, and many, including several Reg readers, have denounced it."/>
|
||||
</node>
|
||||
<node CREATED="1203808135843" ID="Freemind_Link_1006842787" MODIFIED="1203808139531" TEXT="analysis">
|
||||
<node CREATED="1203808160015" ID="Freemind_Link_914839159" MODIFIED="1203808161359" TEXT="As Egerstad and I discussed the problem in August, we both came to the conclusion that the embassy employees were likely not using Tor nor even knew what Tor was. Instead, we suspected that the traffic he sniffed belonged to someone who had hacked the accounts and was eavesdropping on them via the Tor network. As the hacked data passed through Egerstad's Tor exit nodes, he was able to read it as well."/>
|
||||
<node CREATED="1203809494953" ID="Freemind_Link_387297264" MODIFIED="1203809496406" TEXT="it's NOT a problem within Tor. Tor is meant for privacy, not confidentiality!!!! I'm a bit amazed governments and companies are using this as a security measure."/>
|
||||
<node CREATED="1203809649156" ID="Freemind_Link_1627594721" MODIFIED="1203809650250" TEXT="It's not a written law but it is a guideline in having a responsible disclosure. I think he did a responsible disclosure. Was it legal? He did intercept traffic that was not destined for him. So probably "no" depending on Swedish law. Is our society a safer place after the disclosure. Yes, I think it is. Instead of arresting him, the government should have offered him a job."/>
|
||||
<node CREATED="1203809668937" ID="Freemind_Link_522775828" MODIFIED="1203809670156" TEXT="And what did we learn today? Don't report a security hole, sell it to Russia. Just kidding, but do check legal council before doing a disclosure."/>
|
||||
</node>
|
||||
<node CREATED="1213783019474" ID="_10" MODIFIED="1213783277520" TEXT="articles on the incident">
|
||||
<node CREATED="1213783207192" ID="Freemind_Link_1706281223" LINK="http://blog.wired.com/27bstroke6/2007/11/swedish-researc.html" MODIFIED="1213783224349" TEXT="Wired article">
|
||||
<node CREATED="1213783417833" ID="Freemind_Link_1305481313" LINK="http://www.wired.com/politics/security/news/2007/09/embassy_hacks" MODIFIED="1213783426161" TEXT="again"/>
|
||||
</node>
|
||||
<node CREATED="1213783250786" ID="Freemind_Link_1977246852" LINK="http://www.theregister.co.uk/2007/09/10/misuse_of_tor_led_to_embassy_password_breach/" MODIFIED="1213783262005" TEXT="Register article"/>
|
||||
<node CREATED="1213783287333" ID="Freemind_Link_775180190" LINK="http://security4all.blogspot.com/2007/09/how-embassy-passwords-got-leaked.html" MODIFIED="1213783331099" TEXT="Security For all blog">
|
||||
<node CREATED="1213783347864" ID="Freemind_Link_342308366" LINK="http://security4all.blogspot.com/2007/11/tor-embassy-hacker-gets-arrested.html" MODIFIED="1213783353802" TEXT="again"/>
|
||||
</node>
|
||||
<node CREATED="1213783456880" ID="Freemind_Link_1016307796" LINK="http://www.pcworld.com/article/id,137004-page,1/article.html" MODIFIED="1213783463739" TEXT="PC World"/>
|
||||
<node CREATED="1213783485349" ID="Freemind_Link_7323900" LINK="http://blog.passwordresearch.com/2007/09/embassy-password-hacker-reveals-his.html" MODIFIED="1213783496411" TEXT="PasswordResearch blog"/>
|
||||
<node CREATED="1203810967984" FOLDED="true" ID="Freemind_Link_1265229876" LINK="http://www.theregister.co.uk/2007/09/10/misuse_of_tor_led_to_embassy_password_breach/comments/" MODIFIED="1203811086953" TEXT="Shava Nerad
Development Director, The Tor Project">
|
||||
<node CREATED="1203811013125" ID="Freemind_Link_428154943" MODIFIED="1203811014375" TEXT="A connection through Tor can be encrypted end-to-end -- but only if one is communicating with a secure protocol -- https: or encrypted chat both would be examples of this."/>
|
||||
<node CREATED="1203811091265" ID="Freemind_Link_613513779" MODIFIED="1203811098437" TEXT="more sensible comments">
|
||||
<node CREATED="1203811146953" ID="Freemind_Link_785632554" MODIFIED="1203811152953" TEXT="be sensible"/>
|
||||
<node CREATED="1203811154875" ID="Freemind_Link_933048896" MODIFIED="1203811159890" TEXT="use encryption"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1203809749906" FOLDED="true" ID="Freemind_Link_620851645" MODIFIED="1203809753359" TEXT="threat">
|
||||
<node CREATED="1203809756078" ID="Freemind_Link_1865367107" MODIFIED="1203809757906" TEXT="But Egerstad says that many who use Tor mistakenly believe it is an end-to-end encryption tool. As a result, they aren't taking the precautions they need to take to protect their web activity."/>
|
||||
<node CREATED="1203809788234" ID="Freemind_Link_793585356" MODIFIED="1203809789218" TEXT=""I am absolutely positive that I am not the only one to figure this out," Egerstad says. "I'm pretty sure there are governments doing the exact same thing. There's probably a reason why people are volunteering to set up a node."">
|
||||
<node CREATED="1203810387437" ID="Freemind_Link_1624606525" MODIFIED="1203810400406" TEXT="For example, several Tor nodes in the Washington, D.C., area can handle up to 10T bytes of data a month, a flow of data that would cost at least US$5,000 a month to run, and is likely way out the range of volunteers who run a node on their own money, Egerstad said. 

"Who would pay for that?" Egerstad said"/>
|
||||
</node>
|
||||
<node CREATED="1203810283937" ID="Freemind_Link_322430860" MODIFIED="1203810285125" TEXT="To his surprise, he found that more than 99 percent of the traffic -- including requests for Web sites, instant messaging traffic and e-mails -- were transmitted unencrypted.">
|
||||
<node CREATED="1203810289078" ID="Freemind_Link_1190504719" MODIFIED="1203810298031" TEXT="but it can't encrypted"/>
|
||||
<node CREATED="1203810307046" ID="Freemind_Link_878085542" MODIFIED="1203810318187" TEXT="unless you have some UDP SSL thing"/>
|
||||
</node>
|
||||
<node CREATED="1203810355093" ID="Freemind_Link_252326982" MODIFIED="1213737184109" TEXT="Egerstad said the process of snooping on the traffic is trivial. The problem is not with Tor, which still works as intended, but with users' expectations: the Tor system is designed to merely anonymize Internet traffic and does not perform end-to-end encryption.">
|
||||
<edge WIDTH="thin"/>
|
||||
</node>
|
||||
<node CREATED="1203811387921" ID="Freemind_Link_1987137112" MODIFIED="1203811392609" TEXT="know where to sniff">
|
||||
<node CREATED="1203811371734" ID="Freemind_Link_57456761" MODIFIED="1203811373171" TEXT="Yes of course end-to-end encryption would have fixed this, but without it Onion routing actually exacerbates the risk of packet sniffing."/>
|
||||
<node CREATED="1203811395500" ID="Freemind_Link_1030401667" MODIFIED="1203811398437" TEXT="The fact Onion routing was used is the only way this "researcher" (that leaves a bad taste) could get access to those packets in the first place - with regular routing he'd need to have access to the embassy's ISP's network, or their upstream networks, to sniff those packets."/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1203808068890" ID="Freemind_Link_323634907" MODIFIED="1203808078937" POSITION="right" TEXT="ToR background">
|
||||
<node CREATED="1203808255734" ID="Freemind_Link_1600820841" MODIFIED="1203808257078" TEXT="a distributed system of computers that anonymizes the source of network traffic"/>
|
||||
<node CREATED="1203808651406" FOLDED="true" ID="Freemind_Link_1815601685" MODIFIED="1203808657703" TEXT="how it works">
|
||||
<node CREATED="1203811702718" ID="Freemind_Link_1921440204" LINK="http://www.torproject.org/overview.html.en" MODIFIED="1203811724078" TEXT="from the ToR site itself"/>
|
||||
<node CREATED="1203809926984" ID="Freemind_Link_801405722" MODIFIED="1203809928312" TEXT="Under Tor's architecture, administrators at the entry point can identify the user's IP address, but can't read the content of the user's correspondence or know its final destination. Each node in the network thereafter only knows the node from which it received the traffic, and it peels off a layer of encryption to reveal the next node to which it must forward the connection. (Tor stands for "The Onion Router.")"/>
|
||||
<node CREATED="1203809900328" ID="Freemind_Link_207380926" MODIFIED="1203809901687" TEXT="Tor works by using servers donated by volunteers around the world to bounce traffic around en route to its destination. Traffic is encrypted through most of that route, and routed over a random path each time a person uses it."/>
|
||||
<node CREATED="1203808561843" ID="Freemind_Link_441868529" MODIFIED="1203808563718" TEXT="downloaded from the Tor website to configure several servers designed to bounce sensitive traffic around the internet before it ultimately is routed to its destination. The Tor servers try to make it harder to trace the originator of traffic in much the same way an agent under surveillance might quickly drive in and out of a parking garage to throw off pursuers."/>
|
||||
<node CREATED="1203810101187" ID="Freemind_Link_1074734152" MODIFIED="1203810106234" TEXT="1600 nodes"/>
|
||||
</node>
|
||||
<node CREATED="1203808635062" FOLDED="true" ID="Freemind_Link_1922326141" MODIFIED="1203808642515" TEXT="exit node caveat">
|
||||
<node CREATED="1203808626093" ID="Freemind_Link_1458310176" MODIFIED="1203808627281" TEXT="Tor has taken pains to warn its users that people running so-called exit nodes - which are the last Tor servers to touch a packet before sending it on its way - "can read the bytes that come in and out there." They go on to say: "This is why you should always use end-to-end encryption such as SSL for sensitive Internet connections.""/>
|
||||
<node CREATED="1203810068125" FOLDED="true" ID="Freemind_Link_253769006" MODIFIED="1203810069453" TEXT="Unless they're surfing to a website protected with SSL encryption, or use encryption software like PGP, all of their e-mail content, instant messages, surfing and other web activity is potentially exposed to any eavesdropper who owns a Tor server. This amounts to a lot of eavesdroppers -- the software currently lists about 1,600 nodes in the Tor network.">
|
||||
<node CREATED="1203810075000" ID="Freemind_Link_295074878" MODIFIED="1203810091453" TEXT="but then not anonymous!"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1203808283046" FOLDED="true" ID="Freemind_Link_65883705" MODIFIED="1203808850843" TEXT="who uses it?">
|
||||
<node CREATED="1203808288109" ID="Freemind_Link_317136509" MODIFIED="1203808290046" TEXT="has a slew of beneficial uses: Human-rights workers, the military and journalists all use the system. However, the anonymity of Tor has also attracted seedier elements as well: digital pirates, online criminals and, quite possibly, child pornographers"/>
|
||||
<node CREATED="1203808833953" ID="Freemind_Link_735767612" MODIFIED="1203808835843" TEXT="TOR (The Onion Router) is a network of proxy nodes set up to provide some privacy and anonymity to its users. Originally backed by the US Naval Research Laboratory, TOR became an Electronic Frontier Foundation (EFF) project three years ago. The system provides a way for whistleblowers and human rights workers to exchange information with journalists, among other things. The system also provides plenty of scope for mischief."/>
|
||||
<node CREATED="1203809880515" ID="Freemind_Link_1333668798" MODIFIED="1203809881703" TEXT="Tor has hundreds of thousands of users around the world, according to its developers. The largest numbers of users are in the United States, the European Union and China."/>
|
||||
<node CREATED="1203811288640" ID="Freemind_Link_900915922" MODIFIED="1203811289921" TEXT="The first is the use by embassies of the Tor product to obfusticate their communications. This is a reasonable response to the assumed traffic monitoring by the host country."/>
|
||||
</node>
|
||||
<node CREATED="1203809059015" FOLDED="true" ID="Freemind_Link_1072807557" MODIFIED="1203809194218" TEXT="manipulations">
|
||||
<node CREATED="1203809079078" ID="Freemind_Link_587439201" LINK="http://www.teamfurry.com/wordpress/2007/11/19/on-tor/#more-177" MODIFIED="1213783583630" TEXT="data from exit node eavesdropping"/>
|
||||
<node CREATED="1203809128640" ID="Freemind_Link_677882397" LINK="http://www.teamfurry.com/wordpress/2007/11/20/tor-exit-node-doing-mitm-attacks/" MODIFIED="1213783620833" TEXT="exit node man-in-the-middle attacks">
|
||||
<node CREATED="1203809173781" ID="Freemind_Link_1135359854" LINK="http://www.f-secure.com/weblog/archives/00001321.html" MODIFIED="1213783641427" TEXT="response"/>
|
||||
</node>
|
||||
<node CREATED="1203810593156" ID="Freemind_Link_1315461423" LINK="http://www.lightbluetouchpaper.org/2007/09/07/analysis-of-the-storm-javascript-exploits/" MODIFIED="1213783679302" TEXT="SPAM impersonation of Tor by Storm"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</map>
|
49
packages/mindplot/test/unit/import/input/bug2-invalid.mm
Normal file
49
packages/mindplot/test/unit/import/input/bug2-invalid.mm
Normal file
@ -0,0 +1,49 @@
|
||||
<node ID="ID_1" TEXT="SaberMás">
|
||||
<node ID="ID_5" POSITION="right" STYLE="fork" TEXT="Utilización de medios de expresión artística, digitales y analógicos"/>
|
||||
<node ID="ID_9" POSITION="left" STYLE="fork" TEXT="Precio también limitado: 100-120?"/>
|
||||
<node ID="ID_2" POSITION="right" STYLE="fork" TEXT="Talleres temáticos">
|
||||
<node ID="ID_13" POSITION="right" STYLE="fork" TEXT="Naturaleza">
|
||||
<node ID="ID_17" POSITION="right" STYLE="fork" TEXT="Animales, Plantas, Piedras"/>
|
||||
</node>
|
||||
<node ID="ID_21" POSITION="right" STYLE="fork" TEXT="Arqueología"/>
|
||||
<node ID="ID_18" POSITION="right" STYLE="fork" TEXT="Energía"/>
|
||||
<node ID="ID_16" POSITION="right" STYLE="fork" TEXT="Astronomía"/>
|
||||
<node ID="ID_20" POSITION="right" STYLE="fork" TEXT="Arquitectura"/>
|
||||
<node ID="ID_11" POSITION="right" STYLE="fork" TEXT="Cocina"/>
|
||||
<node ID="ID_24" POSITION="right" STYLE="fork" TEXT="Poesía"/>
|
||||
<node ID="ID_25" POSITION="right" STYLE="fork" TEXT="Culturas Antiguas">
|
||||
<node ID="ID_26" POSITION="right" STYLE="fork" TEXT="Egipto, Grecia, China..."/>
|
||||
</node>
|
||||
<node ID="ID_38" POSITION="right" STYLE="fork" TEXT="Paleontología"/>
|
||||
</node>
|
||||
<node ID="ID_6" POSITION="left" STYLE="fork" TEXT="Duración limitada: 5-6 semanas"/>
|
||||
<node ID="ID_7" POSITION="left" STYLE="fork" TEXT="Niños y niñas que quieren saber más"/>
|
||||
<node ID="ID_8" POSITION="left" STYLE="fork" TEXT="Alternativa a otras actividades de ocio"/>
|
||||
<node ID="ID_23" POSITION="right" STYLE="fork" TEXT="Uso de la tecnología durante todo el proceso de aprendizaje"/>
|
||||
<node ID="ID_3" POSITION="right" STYLE="fork" TEXT="Estructura PBL: aprendemos cuando buscamos respuestas a nuestras propias preguntas "/>
|
||||
<node ID="ID_4" POSITION="right" STYLE="fork" TEXT="Trabajo basado en la experimentación y en la investigación"/>
|
||||
<node ID="ID_10" POSITION="left" STYLE="fork" TEXT="De 8 a 12 años, sin separación por edades"/>
|
||||
<node ID="ID_19" POSITION="left" STYLE="fork" TEXT="Máximo 10/1 por taller"/>
|
||||
<node ID="ID_37" POSITION="right" STYLE="fork" TEXT="Actividades centradas en el contexto cercano"/>
|
||||
<node ID="ID_22" POSITION="right" STYLE="fork" TEXT="Flexibilidad en el uso de las lenguas de trabajo (inglés, castellano, esukara?)"/>
|
||||
<node ID="ID_27" POSITION="right" STYLE="bubble" TEXT="Complementamos el trabajo de la escuela">
|
||||
<richcontent TYPE="NOTE">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head></head>
|
||||
<body>
|
||||
<p>Todos los contenidos de los talleres están relacionados con el currículo de la enseñanza básica.</p>
|
||||
<p>A diferencia de la práctica tradicional, pretendemos ahondar en el conocimiento partiendo de lo que realmente interesa al niño o niña,</p>
|
||||
<p>ayudándole a que encuentre respuesta a las preguntas que él o ella se plantea.</p>
|
||||
<p></p>
|
||||
<p>Por ese motivo, SaberMás proyecta estar al lado de los niños que necesitan una motivación extra para entender la escuela y fluir en ella,</p>
|
||||
<p>y también al lado de aquellos a quienes la curiosidad y las ganas de saber les lleva más allá.</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<node ID="ID_30" POSITION="right" STYLE="fork" TEXT="Cada uno va a su ritmo, y cada cual pone sus límites"/>
|
||||
<node ID="ID_31" POSITION="right" STYLE="fork" TEXT="Aprendemos todos de todos"/>
|
||||
<node ID="ID_33" POSITION="right" STYLE="fork" TEXT="Valoramos lo que hemos aprendido"/>
|
||||
<node ID="ID_28" POSITION="right" TEXT="SaberMás trabaja con, desde y para la motivación"/>
|
||||
<node ID="ID_32" POSITION="right" STYLE="fork" TEXT="Trabajamos en equipo en nuestros proyectos "/>
|
||||
</node>
|
||||
</node>
|
@ -210,7 +210,7 @@
|
||||
"defaultMessage": "Importieren Sie vorhandene Mindmaps"
|
||||
},
|
||||
"import.error-file": {
|
||||
"defaultMessage": "Die Dateierweiterung ist ungültig"
|
||||
"defaultMessage": "Import fehlgeschlagen: {error}"
|
||||
},
|
||||
"info.basic-info": {
|
||||
"defaultMessage": "Basisinformation"
|
||||
|
@ -225,7 +225,7 @@
|
||||
"defaultMessage": "Import existing mindmap"
|
||||
},
|
||||
"import.error-file": {
|
||||
"defaultMessage": "The file extension is invalid"
|
||||
"defaultMessage": "Import failed: {error}"
|
||||
},
|
||||
"info.basic-info": {
|
||||
"defaultMessage": "Basic Info"
|
||||
|
@ -219,7 +219,7 @@
|
||||
"defaultMessage": "Importar mapa mental existente"
|
||||
},
|
||||
"import.error-file": {
|
||||
"defaultMessage": "La extension del archivo es invalida"
|
||||
"defaultMessage": "Error al importar: {error}"
|
||||
},
|
||||
"info.basic-info": {
|
||||
"defaultMessage": "Información básica"
|
||||
|
@ -210,7 +210,7 @@
|
||||
"defaultMessage": "Importer une carte mentale existante"
|
||||
},
|
||||
"import.error-file": {
|
||||
"defaultMessage": "L'extension de fichier n'est pas valide"
|
||||
"defaultMessage": "Échec de l'importation : {error}"
|
||||
},
|
||||
"info.basic-info": {
|
||||
"defaultMessage": "Informations de base"
|
||||
|
@ -210,7 +210,7 @@
|
||||
"defaultMessage": "Загрузить майнд-карту с компьютера"
|
||||
},
|
||||
"import.error-file": {
|
||||
"defaultMessage": "Недопустимое расширение файла"
|
||||
"defaultMessage": "Ошибка импорта: {error}"
|
||||
},
|
||||
"info.basic-info": {
|
||||
"defaultMessage": "Основная информация"
|
||||
|
@ -216,7 +216,7 @@
|
||||
"defaultMessage": "导入现有的思维导图"
|
||||
},
|
||||
"import.error-file": {
|
||||
"defaultMessage": "文件扩展名无效"
|
||||
"defaultMessage": "导入失败:{error}"
|
||||
},
|
||||
"info.basic-info": {
|
||||
"defaultMessage": "基本信息"
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wisemapping/webapp",
|
||||
"version": "5.0.11",
|
||||
"version": "5.0.12",
|
||||
"main": "app.jsx",
|
||||
"scripts": {
|
||||
"start": "webpack serve --config webpack.dev.js ",
|
||||
@ -68,7 +68,7 @@
|
||||
"axios": "^0.21.0",
|
||||
"dayjs": "^1.10.7",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.0",
|
||||
"react-dom": "^17.0.2",
|
||||
"react-ga": "^3.3.0",
|
||||
"react-google-recaptcha": "^2.1.0",
|
||||
"react-intl": "^3.0.0",
|
||||
|
@ -452,7 +452,11 @@
|
||||
"import.error-file": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Die Dateierweiterung ist ungültig"
|
||||
"value": "Import fehlgeschlagen: "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "error"
|
||||
}
|
||||
],
|
||||
"import.title": [
|
||||
|
@ -446,7 +446,11 @@
|
||||
"import.error-file": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "The file extension is invalid"
|
||||
"value": "Import failed: "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "error"
|
||||
}
|
||||
],
|
||||
"import.title": [
|
||||
|
@ -446,7 +446,11 @@
|
||||
"import.error-file": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "La extension del archivo es invalida"
|
||||
"value": "Error al importar: "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "error"
|
||||
}
|
||||
],
|
||||
"import.title": [
|
||||
|
@ -444,7 +444,11 @@
|
||||
"import.error-file": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "L'extension de fichier n'est pas valide"
|
||||
"value": "Échec de l'importation : "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "error"
|
||||
}
|
||||
],
|
||||
"import.title": [
|
||||
|
@ -446,7 +446,11 @@
|
||||
"import.error-file": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Недопустимое расширение файла"
|
||||
"value": "Ошибка импорта: "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "error"
|
||||
}
|
||||
],
|
||||
"import.title": [
|
||||
|
@ -446,7 +446,11 @@
|
||||
"import.error-file": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "文件扩展名无效"
|
||||
"value": "导入失败:"
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "error"
|
||||
}
|
||||
],
|
||||
"import.title": [
|
||||
|
@ -9,6 +9,7 @@ import PublicOutlinedIcon from '@mui/icons-material/PublicOutlined';
|
||||
import PrintOutlinedIcon from '@mui/icons-material/PrintOutlined';
|
||||
import ShareOutlinedIcon from '@mui/icons-material/ShareOutlined';
|
||||
import LabelOutlined from '@mui/icons-material/LabelOutlined';
|
||||
import HistoryOutlined from '@mui/icons-material/HistoryOutlined';
|
||||
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
import { fetchMapById } from '../../../redux/clientSlice';
|
||||
@ -143,7 +144,7 @@ const ActionChooser = (props: ActionProps): React.ReactElement => {
|
||||
{role != 'viewer' && (
|
||||
<MenuItem onClick={handleOnClose('history')}>
|
||||
<ListItemIcon>
|
||||
<DeleteOutlinedIcon />
|
||||
<HistoryOutlined/>
|
||||
</ListItemIcon>
|
||||
<FormattedMessage id="action.history" defaultMessage="History" />
|
||||
</MenuItem>
|
||||
|
@ -16,7 +16,7 @@ const DeleteDialog = ({ mapId, onClose }: SimpleDialogProps): React.ReactElement
|
||||
const [error, setError] = React.useState<ErrorInfo>();
|
||||
|
||||
const mutation = useMutation((id: number) => client.deleteMap(id), {
|
||||
onSuccess: () => handleOnMutationSuccess(onClose, queryClient),
|
||||
onSuccess: () => handleOnMutationSuccess(() => onClose(true), queryClient),
|
||||
onError: (error: ErrorInfo) => {
|
||||
setError(error);
|
||||
},
|
||||
@ -31,7 +31,7 @@ const DeleteDialog = ({ mapId, onClose }: SimpleDialogProps): React.ReactElement
|
||||
};
|
||||
|
||||
const { map } = fetchMapById(mapId)
|
||||
const alertTitle=`${intl.formatMessage({ id: 'action.delete-title', defaultMessage: 'Delete' })} ${map?.title}`;
|
||||
const alertTitle = `${intl.formatMessage({ id: 'action.delete-title', defaultMessage: 'Delete' })} ${map?.title}`;
|
||||
return (
|
||||
<div>
|
||||
<BaseDialog
|
||||
|
@ -18,7 +18,7 @@ const DeleteMultiselectDialog = ({
|
||||
const queryClient = useQueryClient();
|
||||
|
||||
const mutation = useMutation((ids: number[]) => client.deleteMaps(ids), {
|
||||
onSuccess: () => handleOnMutationSuccess(onClose, queryClient),
|
||||
onSuccess: () => handleOnMutationSuccess(() => onClose(true), queryClient),
|
||||
onError: (error) => {
|
||||
console.error(`Unexpected error ${error}`);
|
||||
},
|
||||
|
@ -1,6 +1,6 @@
|
||||
import React, { ErrorInfo } from 'react';
|
||||
import { FormattedMessage, useIntl } from 'react-intl';
|
||||
import { useQuery } from 'react-query';
|
||||
import { useQuery, useQueryClient } from 'react-query';
|
||||
import { useSelector } from 'react-redux';
|
||||
import Client, { ChangeHistory } from '../../../../classes/client';
|
||||
import { activeInstance } from '../../../../redux/clientSlice';
|
||||
@ -20,18 +20,19 @@ import Paper from '@mui/material/Paper';
|
||||
|
||||
const HistoryDialog = ({ mapId, onClose }: SimpleDialogProps): React.ReactElement => {
|
||||
const intl = useIntl();
|
||||
|
||||
const queryClient = useQueryClient();
|
||||
const client: Client = useSelector(activeInstance);
|
||||
const { data } = useQuery<unknown, ErrorInfo, ChangeHistory[]>('history', () => {
|
||||
const { data } = useQuery<unknown, ErrorInfo, ChangeHistory[]>(`history-${mapId}`, () => {
|
||||
return client.fetchHistory(mapId);
|
||||
});
|
||||
const changeHistory: ChangeHistory[] = data ? data : [];
|
||||
|
||||
const handleOnClose = (): void => {
|
||||
queryClient.invalidateQueries(`history-${mapId}`);
|
||||
onClose();
|
||||
};
|
||||
|
||||
const handleOnClick = (event, vid): void => {
|
||||
const handleOnClick = (event, vid: number): void => {
|
||||
event.preventDefault();
|
||||
client.revertHistory(mapId, vid).then(() => {
|
||||
handleOnClose();
|
||||
|
@ -23,12 +23,17 @@ export type CreateProps = {
|
||||
onClose: () => void;
|
||||
};
|
||||
|
||||
type ErrorFile = {
|
||||
error: boolean;
|
||||
message: string;
|
||||
}
|
||||
|
||||
const defaultModel: ImportModel = { title: '' };
|
||||
const ImportDialog = ({ onClose }: CreateProps): React.ReactElement => {
|
||||
const client: Client = useSelector(activeInstance);
|
||||
const [model, setModel] = React.useState<ImportModel>(defaultModel);
|
||||
const [error, setError] = React.useState<ErrorInfo>();
|
||||
const [errorFile, setErrorFile] = React.useState<boolean>(false);
|
||||
const [errorFile, setErrorFile] = React.useState<ErrorFile>({error: false, message: ''});
|
||||
const intl = useIntl();
|
||||
|
||||
const mutation = useMutation<number, ErrorInfo, ImportModel>(
|
||||
@ -85,22 +90,45 @@ const ImportDialog = ({ onClose }: CreateProps): React.ReactElement => {
|
||||
const extensionAccept = ['wxml', 'mm'];
|
||||
|
||||
if (!extensionAccept.includes(extensionFile)) {
|
||||
setErrorFile(true);
|
||||
setErrorFile({
|
||||
error: true,
|
||||
message: intl.formatMessage({
|
||||
id: 'import.error-file',
|
||||
defaultMessage: 'Import error {error}',
|
||||
},
|
||||
{
|
||||
error: 'You can import WiseMapping and Freemind maps to your list of maps. Select the file you want to import.'
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
model.contentType = 'application/xml'
|
||||
|
||||
const fileContent = event?.target?.result;
|
||||
const mapConent: string = typeof fileContent === 'string' ? fileContent : fileContent.toString();
|
||||
|
||||
try {
|
||||
const importer: Importer = TextImporterFactory.create(extensionFile, mapConent)
|
||||
|
||||
const importer: Importer = TextImporterFactory.create(extensionFile, mapConent)
|
||||
|
||||
importer.import(model.title, model.description)
|
||||
importer.import(model.title, model.description)
|
||||
.then(res => {
|
||||
model.content = res;
|
||||
setModel({ ...model });
|
||||
})
|
||||
.catch(e => console.log(e));
|
||||
} catch (e) {
|
||||
if (e instanceof Error) {
|
||||
setErrorFile({
|
||||
error: true,
|
||||
message: intl.formatMessage({
|
||||
id: 'import.error-file',
|
||||
defaultMessage: 'Import error {error}',
|
||||
},
|
||||
{
|
||||
error: e.message
|
||||
})
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Read in the image file as a data URL.
|
||||
@ -125,12 +153,9 @@ const ImportDialog = ({ onClose }: CreateProps): React.ReactElement => {
|
||||
})}
|
||||
submitButton={intl.formatMessage({ id: 'import.button', defaultMessage: 'Create' })}
|
||||
>
|
||||
{errorFile &&
|
||||
{errorFile.error &&
|
||||
<Alert severity='error'>
|
||||
<FormattedMessage
|
||||
id="import.error-file"
|
||||
defaultMessage="The file extension is invalid"
|
||||
/>
|
||||
<p>{errorFile.message}</p>
|
||||
</Alert>
|
||||
}
|
||||
<FormControl fullWidth={true}>
|
||||
|
@ -22,13 +22,13 @@ export type BasicMapInfo = {
|
||||
type ActionDialogProps = {
|
||||
action?: ActionType;
|
||||
mapsId: number[];
|
||||
onClose: () => void;
|
||||
onClose: (success?: boolean) => void;
|
||||
fromEditor: boolean;
|
||||
};
|
||||
|
||||
const ActionDispatcher = ({ mapsId, action, onClose, fromEditor }: ActionDialogProps): React.ReactElement => {
|
||||
const handleOnClose = (): void => {
|
||||
onClose();
|
||||
const handleOnClose = (success?: boolean): void => {
|
||||
onClose(success);
|
||||
};
|
||||
|
||||
switch (action) {
|
||||
@ -78,12 +78,12 @@ export const handleOnMutationSuccess = (onClose: () => void, queryClient: QueryC
|
||||
|
||||
export type SimpleDialogProps = {
|
||||
mapId: number;
|
||||
onClose: () => void;
|
||||
onClose: (success?: boolean) => void;
|
||||
};
|
||||
|
||||
export type MultiDialogProps = {
|
||||
mapsId: number[];
|
||||
onClose: () => void;
|
||||
onClose: (success?: boolean) => void;
|
||||
};
|
||||
|
||||
export default ActionDispatcher;
|
||||
|
@ -56,11 +56,18 @@ const ShareDialog = ({ mapId, onClose }: SimpleDialogProps): React.ReactElement
|
||||
}
|
||||
);
|
||||
|
||||
const splitEmail = (emails: string): string[] => {
|
||||
return emails.split(/,|;/)
|
||||
.map(e => e.trim().replace(/\s/g, ''))
|
||||
.filter(e => e.trim().length > 0);
|
||||
}
|
||||
|
||||
|
||||
const addMutation = useMutation(
|
||||
(model: ShareModel) => {
|
||||
const emails = model.emails.split(',');
|
||||
const emails = splitEmail(model.emails);
|
||||
const permissions = emails.map((email: string) => {
|
||||
return { email: email.replace(/\s/g, ''), role: model.role };
|
||||
return { email: email, role: model.role };
|
||||
});
|
||||
return client.addMapPermissions(mapId, model.message, permissions);
|
||||
},
|
||||
@ -76,7 +83,10 @@ const ShareDialog = ({ mapId, onClose }: SimpleDialogProps): React.ReactElement
|
||||
);
|
||||
|
||||
const handleOnClose = (): void => {
|
||||
// Invalidate cache ...
|
||||
queryClient.invalidateQueries(`perm-${mapId}`);
|
||||
onClose();
|
||||
|
||||
};
|
||||
|
||||
const handleOnChange = (event: React.ChangeEvent<HTMLInputElement>): void => {
|
||||
@ -102,8 +112,7 @@ const ShareDialog = ({ mapId, onClose }: SimpleDialogProps): React.ReactElement
|
||||
deleteMutation.mutate(email);
|
||||
};
|
||||
|
||||
const { isLoading, data: permissions = [] } = useQuery<unknown, ErrorInfo, Permission[]>(
|
||||
`perm-${mapId}`,
|
||||
const { isLoading, data: permissions = [] } = useQuery<unknown, ErrorInfo, Permission[]>(`perm-${mapId}`,
|
||||
() => {
|
||||
return client.fetchMapPermissions(mapId);
|
||||
}
|
||||
@ -114,7 +123,9 @@ const ShareDialog = ({ mapId, onClose }: SimpleDialogProps): React.ReactElement
|
||||
};
|
||||
|
||||
// very basic email validation, just make sure the basic syntax is fine
|
||||
const isValid = model.emails.split(',').every(str => /\S+@\S+\.\S+/.test((str || '').trim()));
|
||||
const isValid = splitEmail(model.emails)
|
||||
.every(str => /\S+@\S+\.\S+/.test((str || '')
|
||||
.trim()));
|
||||
|
||||
return (
|
||||
<div>
|
||||
|
@ -59,9 +59,9 @@ function getComparator<Key extends keyof any>(
|
||||
order: Order,
|
||||
orderBy: Key
|
||||
): (
|
||||
a: { [key in Key]: number | string | boolean | Label[] | undefined },
|
||||
b: { [key in Key]: number | string | Label[] | boolean }
|
||||
) => number {
|
||||
a: { [key in Key]: number | string | boolean | Label[] | undefined },
|
||||
b: { [key in Key]: number | string | Label[] | boolean }
|
||||
) => number {
|
||||
return order === 'desc'
|
||||
? (a, b) => descendingComparator(a, b, orderBy)
|
||||
: (a, b) => -descendingComparator(a, b, orderBy);
|
||||
@ -240,19 +240,19 @@ export type ChangeLabelMutationFunctionParam = { maps: MapInfo[]; label: Label;
|
||||
|
||||
export const getChangeLabelMutationFunction =
|
||||
(client: Client) =>
|
||||
async ({ maps, label, checked }: ChangeLabelMutationFunctionParam): Promise<void> => {
|
||||
if (!label.id) {
|
||||
label.id = await client.createLabel(label.title, label.color);
|
||||
}
|
||||
if (checked) {
|
||||
const toAdd = maps.filter((m) => !m.labels.find((l) => l.id === label.id));
|
||||
await Promise.all(toAdd.map((m) => client.addLabelToMap(label.id, m.id)));
|
||||
} else {
|
||||
const toRemove = maps.filter((m) => m.labels.find((l) => l.id === label.id));
|
||||
await Promise.all(toRemove.map((m) => client.deleteLabelFromMap(label.id, m.id)));
|
||||
}
|
||||
return Promise.resolve();
|
||||
};
|
||||
async ({ maps, label, checked }: ChangeLabelMutationFunctionParam): Promise<void> => {
|
||||
if (!label.id) {
|
||||
label.id = await client.createLabel(label.title, label.color);
|
||||
}
|
||||
if (checked) {
|
||||
const toAdd = maps.filter((m) => !m.labels.find((l) => l.id === label.id));
|
||||
await Promise.all(toAdd.map((m) => client.addLabelToMap(label.id, m.id)));
|
||||
} else {
|
||||
const toRemove = maps.filter((m) => m.labels.find((l) => l.id === label.id));
|
||||
await Promise.all(toRemove.map((m) => client.deleteLabelFromMap(label.id, m.id)));
|
||||
}
|
||||
return Promise.resolve();
|
||||
};
|
||||
|
||||
export const MapsList = (props: MapsListProps): React.ReactElement => {
|
||||
const classes = useStyles();
|
||||
@ -698,7 +698,14 @@ export const MapsList = (props: MapsListProps): React.ReactElement => {
|
||||
|
||||
<ActionDispatcher
|
||||
action={activeDialog?.actionType}
|
||||
onClose={() => setActiveDialog(undefined)}
|
||||
onClose={(success) => {
|
||||
setActiveDialog(undefined);
|
||||
|
||||
// If it was a success action, reset the selection list ...
|
||||
if (success) {
|
||||
setSelected([]);
|
||||
}
|
||||
}}
|
||||
mapsId={activeDialog ? activeDialog.mapsId : []}
|
||||
/>
|
||||
</div>
|
||||
|
@ -43,7 +43,7 @@ type MapLoadResult = {
|
||||
|
||||
export const fetchMapById = (id: number): MapLoadResult => {
|
||||
const client: Client = useSelector(activeInstance);
|
||||
const { isLoading, error, data } = useQuery<unknown, ErrorInfo, MapInfo[]>('maps', () => {
|
||||
const { isLoading, error, data } = useQuery<unknown, ErrorInfo, MapInfo[]>(`maps-${id}`, () => {
|
||||
return client.fetchAllMaps();
|
||||
});
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user